jquery - jQuery Ajax未被捕获的TypeError : Cannot use 'in' operator to search

标签 jquery ajax json error-handling

嗨,我正在使用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."]}}

最佳答案

您应该使用:

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将是一个具有一个名为“错误”的属性的对象。您想遍历该属性的键/值。

关于jquery - jQuery Ajax未被捕获的TypeError : Cannot use 'in' operator to search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30698602/

相关文章:

javascript - 防止默认在 ajax 表单提交中不起作用

javascript - Ajax header 请求 "X-openIDM-Reauth-Password"不起作用

javascript - Ajax jquery 成功范围

javascript - 如何在不重新加载页面的情况下在ajax中成功后更改url

javascript - 如何从 C# 中的代码隐藏动态生成 JSON 对象

python - RavenDB对象已正确保存,但查询时有一些空属性

javascript - 在 Javascript 中将数组传递给 Web 方法

jquery - 需要完成三个文本字段之一,验证不适用于强 View

javascript - 如何让这个由 Javascript 设置固定位置的 DIV 留在包含的 DIV 中?

jquery - 从 dijit.form.FilteringSelect 中删除所有选项