我的布局上有 jQuery 加载资源,我想使用CHtml::ajaxButton/ajaxSubmitButton
。
但是当我在运行时将它与另一个渲染一起使用时,它会再次加载 jQuery 资源并出错。
如何防止脚本加载?
<?php echo CHtml::ajaxSubmitButton( 'Submit',
CHtml::normalizeUrl(array('site/AjaxRequest/30')),
array(
'error'=>'js:function(){
alert(\'error\');
}',
'beforeSend'=>'js:function(){
alert(\'beforeSend\');
}',
'success'=>'js:function(data){
alert(\'data from server: \'+data);
}',
'complete'=>'js:function(){
alert(\'complete\');
}',
//'update'=>'#response',
)
);
?>
在我看来,这也是一个非常烦人的问题。我解决的方法是创建 CClientScript 的派生类并将其用作 clientScript 组件(您可以覆盖配置文件中的类类型):
'clientScript' => array
(
'class' => 'MyClientScript',
),
我的类重写了“registerCoreScript”函数,该函数用于注册 jQuery 和 Yii 包含的其他基本脚本。
我在那里所做的几乎就是添加对 ajax 的检查,如果是的话,就不将其传递给父类。
它看起来像这样:
public function registerCoreScript($sName)
{
if (Yii::app()->request->isAjaxRequest)
return $this;
return parent::registerCoreScript($sName);
}
这可以防止在 ajax 调用期间加载任何核心脚本(并再次添加资源)。
您也可以对其中的其他函数执行相同的操作(例如 registerScriptFile)
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)