防止在 Yii 框架上使用 ajaxButton/ajaxSubmitButton 加载 jQuery 资产
Prevent loading of jQuery assets with ajaxButton/ajaxSubmitButton on Yii framework
我的布局上有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',
)
);
?>
这也是IMO的一个非常烦人的问题。我解决的方法是创建一个 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)
希望有帮助。
Yii::app()->clientScript->scriptMap=array(
'jquery.js'=>false,
'jquery.ba-bbq.js'=>false,
'jquery.yiilistview.js'=>false
);
使用这种方式可以防止加载已加载的 javascript 文件。
这是另一种规避这个烦人问题的方法:在 de 'render' 调用之前禁用脚本:
Yii::app()->clientScript->corePackages = array();
Yii::app()->clientScript->scriptMap = array('jquery.yiigridview.js' => false,
'CGridView.css' => false,
'pager.css' => false,
...
'jquery-ui-i18n.min.js'=> false,);
echo $this->renderPartial('myView',array('model'=>$model, 'dataProvider'=>$dataProvider),true,true);
您必须手动放入您不想插入 html 中的任何.js和.css文件。这使您可以启用和禁用您想要/需要的任何内容。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- 如何通过ajax刷新JSF填充的javascript变量
- 如何在php文件中获取$.post-ajax传递的值
- Replacing $ .ajax?
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- Ajax发布表单序列化,发布引号'
- 通过Ajax将JavaScript函数传递给PHP文件
- ajax请求的顺序总是不同的
- 可以't使用Polymer's的核心ajax
- Ajax Live搜索发布到Laravel视图
- Ajax聊天消息重复而不仅仅是更新
- 从控制器返回后Ajax启动事件激发
- PHP AJAX图片上传示例不上传
- 从ajax请求中获取javascript对象
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 如何在Javascript中解析AJAX数组的特定部分
- Ajax文件加载和<输入>文件加载
- Javascript/jQuery中的并行Ajax调用
- Ajax-如何获取数据
- JS验证ajax返回的html中的表单数据