php - Yii:如何动态呈现部分 JavaScript 小部件

标签 php ajax yii

我在动态重新加载 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

如何禁用这个随机参数?

我的index.php

<p>
    <div id='widget-container'>
        <?php 
            $this->renderPartial('widget');
        ?>
    </div>
</p>

我的 Controller

public function actionWidget()
{
    $this->renderPartial('widget',array(),false,true);
}

我的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())
    )
    );
?>

最佳答案

有一个扩展 NLCClientScript ,即在通过 ajax 更新 View 时防止 javascript 文件的重复链接,替换 Yii 的原始 ClientScript 类。

稍微不同的方法是将 renderPartial 的 processOutput 设置为 false,但是,在这种情况下它根本不会嵌入任何 js

$this->renderPartial('widget', array(), false, false);

关于php - Yii:如何动态呈现部分 JavaScript 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17791080/

相关文章:

java - 如何将 Ajax 与 JSP 结合使用

php - 当 mysql 到远程服务器时,LOAD DATA LOCAL INFILE 不起作用

php - 为什么 "\t"不转义这种 PHP 日期格式?

php - 文件路径可以用内存资源代替吗?

php - SQL 帮助 ~ 关系数据库模型 ~ 显示结果

javascript - Codeigniter:仅在第一个模式框上调用 Ajax

javascript - AJAX "success"未调用

java - Java和php5 MD5 Hash的区别

yii - 使用 Yii::app()->user->isGuest 时出错

php - 在 Yii2 中运行行为代码之前获取 Controller 操作