您好我正在使用laravel jQuery& ajax返回JSON错误:
error: function (jqXhr, json, errorThrown) {
var errors = JSON.stringify(jqXhr.responseJSON);
var errorsHtml= '';
$.each( errors, function( key, value ) {
errorsHtml += '<li>' + value[0] + '</li>';
});
toastr.error( errorsHtml , "Error " + jqXhr.status +': '+ errorThrown);
}
但是我收到以下错误:
Uncaught TypeError: Cannot use 'in' operator to search for '209' in {"errors"{"name":["A name is required"],"hours":["Please input a capacity in hours."],"start_date":["Please input a start date."],"end_date":["Please input an end date."]}}
任何想法,如果我使用.parse
而不是.stringify
,我会收到以下错误:
Uncaught SyntaxError: Unexpected token j
。
任何想法我做错了什么?
提前致谢。
var errors = JSON.stringify(jqXhr.responseJSON);
console.log('normal'+jqXhr.responseJSON);
console.log('stringify: '+errors);
normal[object Object]
stringify: {"errors":{"name":["A name is required"],"hours":["Please input a capacity in hours."],"start_date":["Please input a start date."],"end_date":["Please input an end date."]}}
答案 0 :(得分:2)
您应该使用:
error: function(jqXhr, textStatus, errorThrown) {
var errorsHtml = '';
$.each(jqXhr.responseJSON.errors, function(key, value) {
errorsHtml += '<li>' + value[0] + '</li>';
});
toastr.error(errorsHtml, "Error " + jqXhr.status +': '+ errorThrown);
}
jqXhr.responseJSON
是已经解析为对象的响应。您在编辑中显示的JSON将是一个具有一个名为“errors”的属性的对象。您想循环遍历该属性的键/值。