Javascript 如何在YII2中使用PJAX处理来自控制器的错误?
我使用的是yii2pjax小部件,它无法从控制器抛出错误,因此当控制器出现任何错误时,我无法为用户记录错误 PJAX代码Javascript 如何在YII2中使用PJAX处理来自控制器的错误?,javascript,php,yii2,pjax,Javascript,Php,Yii2,Pjax,我使用的是yii2pjax小部件,它无法从控制器抛出错误,因此当控制器出现任何错误时,我无法为用户记录错误 PJAX代码 <?php Pjax::begin([ 'id' => 'createBucketPjax', 'timeout' => 4000, 'formSelector' => '#createBucketForm', 'enablePushState' =>
<?php Pjax::begin([
'id' => 'createBucketPjax',
'timeout' => 4000,
'formSelector' => '#createBucketForm',
'enablePushState' => false,
'clientOptions' => [
'skipOuterContainers' => true,
'error' => new JsExpression("function(event) {
alert('Anything');
}"),
]
]); ?>
我试过下面的clientOptions,但不起作用
'error' => new JsExpression("function(event) {
alert('Please work');
}"),
也使用了javascript,但没有帮助:-
$(document).on('pjax:error', function(event) {
console.log(event);
})
有什么方法可以让我从yii2的控制器发送404吗?这实际上可以解决我在yii2pjax中遇到的问题
为了响应AJAX请求,Pjax将向客户端发送更新的正文内容(基于AJAX请求),客户端将用新内容替换旧内容。然后,将使用pushState更新浏览器的URL。整个过程不需要重新加载布局或资源(js、css)
您必须处理完整的表单内容,而不是json
因此,您的代码必须如下所示(始终返回表单html):
您的请求实际上是一个HTTP 200应答,因此对于
pjax:error
没有引发任何错误,这就是我想要实现的,即使我抛出异常,HTTP发送200@ustmastroas@Dexen编写了pjax,它使用完整内容替换而不是json响应,感谢您澄清@DexenPJAX然后,当出现任何错误时,它会在模式之外呈现HTML。
$(document).on('pjax:error', function(event) {
console.log(event);
})
if(!$model->save()){
$transaction->rollBack();
}
return $this->renderAjax('create', [
'model' => $model
]);