【问题标题】:missing ] after element list parsing JSON元素列表解析 JSON 后缺少 ]
【发布时间】:2023-03-10 20:27:01
【问题描述】:

执行:

$.post(
"/url/to/method",
{ },
function(data){
    var obj2 = eval("("+$(data).children()+")");
    // OR var obj = $.evalJSON($($(data).children())); // Jquery-json
    $body = $("#AAA");
    $body.html(obj.fied);
},
 "xml"
);

而在萤火虫中变成“元素列表后缺少]”(在第 5 行或第 6 行)错误。方法的 JSON 输出已通过 jsonlint.com/

验证

可能很明显,但我是 AJAX/JSON 的新手。谢谢

【问题讨论】:

  • 不要使用eval解析JSON数据。请改用JSON.parse
  • @Gumbo,同意 JSON.parse 可以在json.org/js.html找到
  • 如果您发布 JSON,它会更容易提供帮助。
  • 也使用jslint.com 进行验证! :)

标签: javascript json parsing


【解决方案1】:

使用JSON.parse 方法,或者在将它传递给eval 之前确保在括号旁边包含一个空格...

eval(" (" + data + ") ");

【讨论】:

  • 使用带空格的 eval 仍然不行(同样的错误)。使用 JSON.parse 我出现一个奇怪的错误:text.replace 不是函数,json2.js:445
  • 请发布 JSON。如果它包含敏感信息,请使用虚拟数据重新创建错误。显然有问题。
【解决方案2】:

您是在 .NET 2.0 中编写的吗?如果是这样,请尝试将您的数据构造成查询字符串,而不是传递 JSON 对象。

示例: var1=alma&var2=用户

其中“var1”和“var2”是您的网络方法期望的参数名称。使用帖子传递这个..数据:{querystring} 我在 2.0 中将 JSON 传递给 web 服务时遇到了问题。

祝你好运

【讨论】:

    【解决方案3】:

    可能发生的情况是您的 $.post 调用已经返回一个 JSON 对象。 jQuery 将尝试自动检测 JSON 并为您解析它。当您对这样的 JSON 对象调用 eval 时,您会看到此错误。偷偷摸摸!只需按原样使用数据对象即可。

    【讨论】:

    • 我遇到了这个问题,现在只使用我能够访问 JSON 成员的对象。谢谢。
    • 我也能够用这个答案解决我的问题。谢谢。
    【解决方案4】:

    原来 jQuery 会尝试判断结果是否为 JSON 并自动解析它,但在这种情况下,数据已经是一个 JavaScript 对象,而不是等待解析的 JSON 字符串。所以你可以直接使用这个对象,而不是使用 eval() 和 JSON.parse。

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2018-04-08
      • 2021-01-05
      相关资源
      最近更新 更多