如何在 Yii 中禁用 Ajax 请求上的 jQuery 自动加载? [英] How to disable jQuery autoloading on Ajax request in Yii?

查看:20
本文介绍了如何在 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.

这篇关于如何在 Yii 中禁用 Ajax 请求上的 jQuery 自动加载?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆