【发布时间】:2013-06-13 17:56:52
【问题描述】:
我正在返回一个如下所示的字符串:
[{"name":"John","age":"21","gender":"m"}]
然后做:
JSON.parse(result.responseText);
将数据放入网格控件中。它在 FF 中运行良好。在 IE 中,我的字符串如下所示:
[{\"name\":\"John\",\"age\":\"21\",\"gender\":\"m\"}]
并且斜线没有被处理,我的JSON.parse(result.responseText) 失败给我无效字符错误。为什么我在浏览器之间有不同的响应,我该如何解决这个问题?我正在发布完整的通话。
Ext.Ajax.request({
url : 'PersonServlet',
method: 'POST',
params :{'id': id},
success: function ( result, request ) {
resultData = JSON.parse(result.responseText);
store.removeAll();
store.add(resultData);
},
failure: function ( result, request ) {
resultData = JSON.parse(result.responseText);
}
});
【问题讨论】:
-
IE8 的 JSON.parse 不喜欢解析数组文字,只解析对象。你可能会做一些事情,比如将你的数组包装在一个单独的 prop 对象中:{data:[{"name":"John","age":"21","gender":"m"}]},然后说 resultData = JSON.parse(result.responseText).data;
-
好吧,我尝试使用这样的返回数据 "{data:[{'name':'John','age':'21','gender':'m'}]}" 但是resultData = JSON.parse(result.responseText);呼叫不起作用,并给我一个错误 JSON 未确定。
-
我可以清理 responseText 以将反斜杠替换为空白空间吗?这会起作用,但这是一个好的解决方案吗?
-
也许,但我不确定为什么\那些反斜杠首先是如何存在的,如果您的响应看起来像第一个代码框...
-
尝试在您的回复中将 symbol(") 替换为 symbol(')。首选,在发送到 extjs 之后。
标签: java javascript ajax servlets extjs