Javascript 如何在YII2中使用PJAX处理来自控制器的错误?

Javascript 如何在YII2中使用PJAX处理来自控制器的错误?,javascript,php,yii2,pjax,Javascript,Php,Yii2,Pjax,我使用的是yii2pjax小部件,它无法从控制器抛出错误,因此当控制器出现任何错误时,我无法为用户记录错误 PJAX代码 <?php Pjax::begin([ 'id' => 'createBucketPjax', 'timeout' => 4000, 'formSelector' => '#createBucketForm', 'enablePushState' =>

我使用的是yii2pjax小部件,它无法从控制器抛出错误,因此当控制器出现任何错误时,我无法为用户记录错误

PJAX代码

 <?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
]);