3

抱歉,我非常需要它,这很重要!我有其他相同的帖子,但我标记了已回答的问题,但我仍然不知道如何解决!

我有这个 ajax 响应:

[{"error":"uname","message":" \u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9 \u05d0\u05d9\u05e0\u05d5 \u05d9\u05db."},{"error":"email","message":" \u05d0\u05e0\u05d0 \u05d4\u05db\u05e0\u05e1 \u05d0\u05d9\u05de\u05d9\u05dc"},{"error":"password","message":" \u05e9\u05d3\u05d4 \u05d6\u05d47"},{"error":"oldpassinp","message":" \u05d4\u05e7\u05e9 \u05e1\u05d9\u05e1\u05de\u05d0 \u05e9\u05dc."}]

我的输入字段是这样的:

<input type="text" id="fname" name="fname" value="" class="inplaceError"/><span id="fname_error"></span>

跨度保存消息错误。

我在客户端使用它:

 var data_array = JSON.parse("["+data+"]");
 // tryed either var data_array = JSON.parse(data); not working too

  for (var i in data_array )
  {
     $("#"+data_array[i].error+"_error").html(data_array[i].message);
     $("#"+data_array[i].error).css({"border":"1px solid red"});
  }    

该代码有什么问题?它不会为每个字段添加错误,请提供任何帮助。

我是javascript新手。

4

2 回答 2

3

如果 ajax 请求是 datatype: 'json' 那么响应将是一个 json 数组

$.each(data, function(idx, error){
    $("#"+error.error+"_error").html(error.message);
})
于 2013-08-13T05:27:03.493 回答
1

JSON.parse仅在您接收需要转换为 JSON 对象的 JSON 字符串时使用。在您的示例中,您提供了一个 JSON 对象。如果您在 ajax 请求的响应中收到 JSON,则不需要解析。

如果是这种情况,那么您也不需要将数据括在括号中,尤其是使用字符串连接时。

在这种情况下,您可以只遍历 JSON 对象本身,如下所示:

for(var i in data) {
    $("#"+ data[i].error+"_error").html(data[i].message);
    $("#"+ data[i].error).css({"border":"1px solid red"});
}

此外,您的 JSON 示例数据似乎没有fname密钥,这可能会导致您感到沮丧(我只看到了uname)。

如下所述,您也可以只使用 jQuery 的 each 方法进行迭代,但 for 循环就足够了。

我希望这会有所帮助。

于 2013-08-13T05:40:41.193 回答