假设我有一个ajax动作,根据参数返回特定的图像URL。我想使用ajax调用通过ajax更新具有不同图像的图像标记。行动如下:
public function actionSendUrl($params)
{
echo IMAGE_PATHS[$params];
}
但是当我来CHtml::ajaxButton
时,我发现CHtml::ajax
课程只有update
或replace
属性,只能用我的响应替换整个文本或整个标记。
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代码以实现我的目标?
答案 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