下面的视图由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已被保留为默认值
经过一些调试找到解决方案后,将在此处发布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)