对不起,重新发布我只是非常需要它,这很重要! 我有其他相同的帖子,但我标记了问题的答案,我仍然没有弄清楚如何解决!
我有这个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新手。
答案 0 :(得分:3)
如果ajax请求是数据类型:'json'那么响应将是一个json数组
$.each(data, function(idx, error){
$("#"+error.error+"_error").html(error.message);
})
答案 1 :(得分: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的每个方法进行迭代,但for循环就足够了。
我希望有所帮助。