如何在 Yii 中禁用 Ajax 请求上的 jQuery 自动加载?
我正在使用以下代码生成 ajax 请求:
I'm using the following code to generate an ajax request:
echo CHtml::dropDownList('teamA', '', EnumController::getTeamOption(), array(
'empty' => '(Team / Single)',
'ajax' => array(
'type'=>'POST',
'url'=> $url,
'update'=>"#resultA",
//'data'=>"js:$('#teamA').hide().fadeIn()"
)
)
);
在我的主要布局中,我有以下内容:
In my main layout, I have the following:
<?php Yii::app()->clientScript->scriptMap=array('jquery.js'=>false);?>
<?php Yii::app()->clientScript->scriptMap=array('jquery.min.js'=>false);?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js"></script>
Yii 正在从资产中加载 jQuery 副本,然后 - 另一个副本,直接来自 Google.我只想使用 Google 副本并强制 Yii 不从资产加载自己的副本.我该怎么做?
Yii is loading jQuery copy out of assets and then -- another copy, directly from Google. I want to use only Google copy and force Yii to not load own copy from assets. How can I do this?
推荐答案
在 Yii 中,你永远不应该在主布局中硬编码任何 javascript 信息.
In Yii you should never hardcode any javascript information in the main layout.
Yii 可以确定是否已包含客户端脚本 (javascript),但对于核心脚本(如 jquery 或 jqueryui),您必须在配置文件中修改这些包.
Yii can determine if a client script (javascript) was already included, but for core scripts (like jquery or jqueryui) you have to modify those packages in your config file.
打开main.php
配置文件,在CClientScript
组件中添加你需要的所有js包(你应该把它添加到components
),像这样:
Open the main.php
configuration file and add all the js packages you need within the CClientScript
component (you should add it inside components
), like this:
'clientScript'=>array(
'packages'=>array(
'jquery'=>array(
'baseUrl'=>'//ajax.googleapis.com/ajax/libs/jquery/1.8/',
'js'=>array('jquery.min.js'),
'coreScriptPosition'=>CClientScript::POS_HEAD
),
'jquery.ui'=>array(
'baseUrl'=>'//ajax.googleapis.com/ajax/libs/jqueryui/1.8/',
'js'=>array('jquery-ui.min.js'),
'depends'=>array('jquery'),
'coreScriptPosition'=>CClientScript::POS_BEGIN
)
),
),
然后,每次需要 jquery 时,只需在代码前添加:
Then, every time you need jquery just add this before your code:
$cs = Yii::app()->getClientScript();
$cs->registerCoreScript('jquery');
Yii 将只包含一次 jquery(或任何其他脚本),即使您在代码中多次调用它.
Yii will then include jquery (or any other script) only once, even if you call it several times in your code.
相关文章