我刚刚将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);
}
});
亲切的问候。
答案 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
但是如果出现错误,请尝试更改响应代码500
到200
然后在您的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);
}
});