yii2 activeform与同步ajax错误

for*_*rtm 2 jquery yii2

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

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

查看:

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


<?=
         $this->render("_activeFormPage")
?>  
Run Code Online (Sandbox Code Playgroud)

messages?id = 1:950不赞成在主线程上使用同步XMLHttpRequest,因为它会对最终用户的体验产生不利影响。如需更多帮助,请访问https://xhr.spec.whatwg.org/

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

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

for*_*rtm 5

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

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

我们需要预取这些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' 
    ];
Run Code Online (Sandbox Code Playgroud)