我在html文件中动态重新加载区域时遇到问题.我使用基于Ajax的方法.我成功更新了我感兴趣的区域(HTML div标签),但每次我进行更新时,都会下载并处理相同的JavaScript以及替换的html代码,这会消耗时间.我希望浏览器在AJAX更新时重复使用上次下载的JavaScript文件,而不是一次又一次地获取相同的内容,这会导致过多的开销.我的意思是说?比方说,我有一个Button Widget具有widget.js连接到它的JavaScript.此JavaScript将负责按钮单击时触发的事件.每次单击此按钮时,该事件将"拍摄"AJAX请求,并且HTML页面上的特定区域会更新,并widget.js在必要时下载.我想这widget.js只是第一次下载,但目前它在每个AJAX请求下载.我注意到每次请求提到的JavaScript文件时,附加的查询参数_都是随机值.
widget.js?_=1374504824837
Run Code Online (Sandbox Code Playgroud)
如何禁用此随机参数?
我的index.php
<p>
<div id='widget-container'>
<?php
$this->renderPartial('widget');
?>
</div>
</p>
Run Code Online (Sandbox Code Playgroud)
我的控制器
public function actionWidget()
{
$this->renderPartial('widget',array(),false,true);
}
Run Code Online (Sandbox Code Playgroud)
我的widget.php
<?php
$url = 'widget';
$update = '#widget-container';
$this->widget('ext.bootstrap.widgets.TbButton',
array('label' => 'Widget',
'size' => 'medium',
'buttonType' => 'ajaxButton',
'url' => $url,
'ajaxOptions' => array('type' => 'POST',
'update' => $update,
'cache' => false),
'htmlOptions' => array('id' => 'widget'.uniqid())
)
);
?>
Run Code Online (Sandbox Code Playgroud)
有一个扩展名NLCClientScript,用于防止在通过ajax更新视图时重复链接javascript文件,替换Yii的原始ClientScript类.
稍微不同的方法是将renderPartial的processOutput变为false,但是,在这种情况下,它根本不会嵌入任何js
$this->renderPartial('widget', array(), false, false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5459 次 |
| 最近记录: |