与yii2 activeform同步ajax错误

时间:2017-04-02 09:14:32

标签: jquery yii2

下面的视图由ajax呈现并从控制器返回到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/

但是这给出了完全刷新时同步XMLhttprequest的chrome中的上述错误,我通过触发器点击按钮来模拟ajax,该按钮执行ajax并获取数据。一旦注释了渲染_activeFormPage的行,错误就会消失。

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

1 个答案:

答案 0 :(得分:3)

经过一些调试找到解决方案,将在此处发布其余的yii2人 - &gt;

这是因为<script>标记出现在控制器的输出中,即HTML到ajax成功回调,它使用它来使用jquery更新dom .html

我们需要预取这些javascript,以便yii2不必在renderAjax上懒惰地包含新的脚本标记,因为它已经存在。所以取决于AppAsset文件,我特意将导入添加到ActiveFormAsset和ValidationAsset,这在我的案例中是罪魁祸首

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