有没有通过Ajax调用更新标签属性的方法?

时间:2014-01-13 08:21:41

标签: jquery ajax image yii

假设我有一个ajax动作,根据参数返回特定的图像URL。我想使用ajax调用通过ajax更新具有不同图像的图像标记。行动如下:

public function actionSendUrl($params)
{
   echo IMAGE_PATHS[$params];
}

但是当我来CHtml::ajaxButton时,我发现CHtml::ajax课程只有updatereplace属性,只能用我的响应替换整个文本或整个标记。

echo CHtml::ajaxButton('BLAH','SendUrl?params=***',array('replace'=>'#image_tag_id'),);

将我的操作代码修改为:

public function actionSendUrl($params)
{
   echo CHtml::image(IMAGE_PATHS[$params],array('id'=>'image_tag_id'));
}

令我小便的是,每次我更改图像时都必须构建标记ID,但整个标记也会在很短的时间内消失,以便页面在加载新图像时上下移动。有没有办法让CHtml::ajax更新scr而不是整个标记?

或者我只是推动自己编写真正的jQuery代码以实现我的目标?

1 个答案:

答案 0 :(得分:1)

您可以通过在ajax数组的success属性中指定(自定义编写的)jquery函数来执行此操作,该函数会更新src。见:http://www.yiiframework.com/doc/api/1.1/CHtml#ajax-detail

这样的事情(但这实际上取决于你的情况):

echo CHtml::ajaxButton('BLAH','SendUrl?params=***',array( 
    'success'=>
        "function(return, status, jqXHR){
            if(status == 'success'){
                $('#image_tag_id').attr('src',return);
            }
       }"
    ),
);

您可能需要查看jQuery的ajax页面:http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings