Laravel - 如何在出错时返回json错误消息?

时间:2016-11-10 09:47:19

标签: php json laravel x-editable

我刚刚将x-editable添加到我当前的Laravel项目中。它运行得很好,但我遇到了返回错误消息的问题。

当控制器能够保存请求时,我获得了成功!' json消息。没关系。但是当我有错误时,我没有得到错误!'信息。正如您所看到的,当$ article-> save()未成功时,我会启动错误消息。

我做错了什么?

控制器:

$article->$input['name'] = $input['value'];

if( $article->save() ){
    // this works
    return response()->json(array('status'=>'success', 'msg'=>'Success!.'), 200);
} 

else{
    // this does not work
    return response()->json(array('status'=>'error', 'msg'=>'Error!'), 500);
}

视图中的JavaScript:

$(".xeditable").editable({
    success: function(response) {
        console.log(response.msg);
    },
    error: function(response) {
        // console says, that response.msg is undefinded
        console.log(response.msg);
    }
});

亲切的问候。

2 个答案:

答案 0 :(得分:1)

error回调中,传递的response参数是jqXHR(jQuery XMLHttpRequest)。要访问JSON响应,您可以像下面的代码一样访问responseJSON属性。

$(".xeditable").editable({
  success: function(response) {
    console.log(response.msg);
    // Must return nothing.
  },
  error: function(response) {
    // The JSON object stored in responseJSON property.
    console.log(response.responseJSON.msg);

    // Must return a string, represent the error message.
    return response.responseJSON.msg;
  }
});

正如X-editable文档所指出的,error回调必须返回一个表示错误消息的字符串。

希望这有帮助!

答案 1 :(得分:-1)

我不熟悉x-editable但是如果出现错误,请尝试更改响应代码500200然后在您的javascript中

$(".xeditable").editable({
    success: function(response) {
        if (response.status == 'error') {
            console.log('error: ' + response.msg);
        }
        else {
            // do stuff for successful calls
            console.log('success: ' + response.msg);
        }
    },
    error: function(xhr, status, error) {
        console.log('server error: ' + status + ' ' + error);
    }
});