ajaxLink

Всем привет! весь форум облазил по yii и по jquery, но ответа так и не нашел.

Вот так формирую ссылку:




<? echo CHtml::ajaxLink($sub->name,Controller::createUrl('index/UpdateAjax', array('id'=>$sub->id)), $ajax); ?>






$ajax = array(

                                    'dataType'=>'json',

                                    'beforeSend' => 'function(){

                                        //show loader

                                        $("#shadow").css("display", "block");

                                        $("#ajax_loader").css("display", "block");

                                    }',

                                    'success'=>'function(data,status){

                                        

                                        $("#ajax_loader").css("display", "none");

                                        $("#shadow").css("display", "none");

                                        $("#content_data").html(data.content);


                                    }'

                                );



Подскажите, как мне в АЯКС опции ‘success’ получить id элемента ссылки. $(this).attr(“id”) не прокатывает. Судя по генерируемому ява скрипту мне надо получить что-то вроде yt0 - идентификатор, присваеваемый ссылке…

так как id кнопки заранее известно ( array(‘id’=>$sub->id)) ), можно подставить в ‘success’ что нужно, как вариант использовать ajaxSuccess


$("#<?php echo $sub->id ?>").ajaxSuccess(function() {

                alert($(this).attr('id'));

            });



Если я правильно понял ваш вопрос (и если он конечно еще актуален) попробуйте так:




$ajax = array(

                                    'dataType'=>'json',

                                    'beforeSend' => 'js:function(){

                                        //show loader

                                        $("#shadow").css("display", "block");

                                        $("#ajax_loader").css("display", "block");

                                    }',

                                    'success'=>'js:function(data,status){

                                        

                                        $("#ajax_loader").css("display", "none");

                                        $("#shadow").css("display", "none");

                                        $("#content_data").html(data.content);


                                    }'

                                );



Отличие от вашего когда в префиксах ‘js:’ перед описание яваскрипта.

Такая же проблема. Как получить контекст ссылки, по которой был клик?

Вот пример:




<?php echo CHtml::ajaxLink(

            '<span class="glyphicon glyphicon-remove text-danger"></span>',

            array('removeProduct', 'productID' => $data->productID),

            array(

                'dataType'=>'json',

                'type' => 'post',

                'data' => array(

                    'YII_CSRF_TOKEN' => Yii::app()->request->csrfToken,

                ),

                'success' => 'js:function(data, code){

                    if(code == "success"){

                        $(this)

                    }

                }',

            ),

            array(

                'title' => 'Убрать из корзины',

                'confirm' => 'Вы уверены?',

            )); 

?>



В данном примере $(this) - это объект, определяющий сам ajax запрос.

Вопрос тот же: как из функции success обратиться к ссылке, по которой кликнули?

Проблему я решил конечно же передачей туда-сюда идентификатора ссылки, но это, имхо, костыль. Мб есть лаконочный способ решения?

Вообще это вопрос больше к jquery, вот тут есть интересные варианты: http://stackoverflow.com/questions/6394812/this-inside-of-ajax-success-not-working

Спасибо огромное :)

использовал




    context: this,



все работает.


context:this

отлично работает, кстати очень хорошая штука.

Раньше делал так:




$id='my_link_' . rand(1, 255);

//в htmlOptions ассигним id

'id'=>$id



Так у нас есть всегда ид нашего элемента, ну и + рандом чтобы избежать проблем при множественной загрузке.