【问题标题】:synchronous ajax error with yii2 activeformyii2 activeform 的同步 ajax 错误
【发布时间】:2017-04-02 09:14:32
【问题描述】:

下面的视图由 ajax 渲染并从控制器返回给 JS,JS 将视图放入正确的容器中:

$page =  $this->renderAjax("view", [
                                "dataProvider" => $dataProvider
                     ]) ;
        Yii::$app->response->format = 'json';
        return array("error"=>false,"page"=>$page);

查看:

<?= 
    ListView::widget([
        'id'=>'dataListId',
        'dataProvider' => $dataProvider,
        'itemOptions' => ['class' => 'item'],
        'itemView' => '_dataItemView',
        'summary'=>'',
        'emptyText'=>$emptyPage         
    ]) 
?>


<?=
         $this->render("_activeFormPage")
?>  

messages?id=1:950 主线程上的同步 XMLHttpRequest 是 不推荐使用,因为它对最终用户的有害影响 经验。如需更多帮助,请查看https://xhr.spec.whatwg.org/

但这会在 chrome 中为同步 XMLhttprequest 在完全刷新时提供上述错误,我通过触发单击执行 ajax 并获取上述数据的按钮来模拟 ajax。只要注释了要渲染 _activeFormPage 的行,错误就会消失。

我们如何摆脱同步 ajax 错误,因为在 javascript 中,异步在从 jquery 进行 ajax 调用时被保留为默认值

【问题讨论】:

    标签: jquery yii2


    【解决方案1】:

    经过一些调试找到解决方案,将在此处发布给其他 yii2 人->

    这是由于 &lt;script&gt; 标记出现在控制器的输出中,即 HTML 到 ajax 成功回调,它使用它来使用 jquery .html 更新 dom

    我们需要预取这些 javascript,这样 yii2 就不必在 renderAjax 上懒惰地包含一个新的 script 标签,因为它已经存在了。因此,根据 AppAsset 文件,我专门添加了对 ActiveFormAsset 和 ValidationAsset 的导入,这在我的案例中是罪魁祸首

    public $depends = [
            'yii\web\YiiAsset',
            'yii\widgets\ActiveFormAsset',
            'yii\validators\ValidationAsset',   
            'yii\grid\GridViewAsset',
            'yii\bootstrap\BootstrapPluginAsset',
            '\odaialali\yii2toastr\ToastrAsset' 
        ];
    

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      相关资源
      最近更新 更多