alaevka
(Alaevka)
February 16, 2010, 1:51pm
1
Всем привет! весь форум облазил по 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'));
});
rosko
(A)
March 13, 2010, 3:21pm
3
Если я правильно понял ваш вопрос (и если он конечно еще актуален) попробуйте так:
$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:’ перед описание яваскрипта.
allush
(Al Lushnikov)
December 1, 2013, 12:25pm
4
Такая же проблема. Как получить контекст ссылки, по которой был клик?
Вот пример:
<?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 обратиться к ссылке, по которой кликнули?
Проблему я решил конечно же передачей туда-сюда идентификатора ссылки, но это, имхо, костыль. Мб есть лаконочный способ решения?
andy_s
(Arekandrei)
December 1, 2013, 12:46pm
5
ineersa
(Ineersa)
December 2, 2013, 9:32am
7
context:this
отлично работает, кстати очень хорошая штука.
Раньше делал так:
$id='my_link_' . rand(1, 255);
//в htmlOptions ассигним id
'id'=>$id
Так у нас есть всегда ид нашего элемента, ну и + рандом чтобы избежать проблем при множественной загрузке.