我使用 jquery $.get()
进行 ajax 调用,它返回一个 json 数组,并且在某些情况下工作正常。然而,在其他情况下,在 Firefox 中我收到一个奇怪的错误(翻译自德语):
XML-processing error: syntax error
这是 json 的结构,如我的 servlet int java 控制台所示:
[{"key":"...","type":"...","content":"..."},
{"key":"...","type":"...","content":"..."},
...]
这是使用 JSON.stringify()
登录 ff 控制台时的结构:
[{\"key":\"...",\"type":\"...",\"content":\"..."},
{\"key":\"...",\"type":\"...",\"content":\"..."},
...]
我的请求看起来像这样:
$.get(url,
{"operation": "search", "searchText": searchText, "types": types, "resultNumber": 99},
function(data, status){
console.log(JSON.stringify(data));
});
我用于创建 JSON 数组的 java 方法:
private JSONArray parseJSON (ArrayList<ResultObject> aResultList) throws JSONException
{
JSONArray resultJSONArray = new JSONArray();
for (ResultObject resultObject : aResultList)
{
JSONObject jsonObject = new JSONObject();
HashMap<String,String> fields = resultObject.getFields();
for (Map.Entry<String, String> entry : fields.entrySet())
{
jsonObject.put(entry.getKey(), entry.getValue());
}
resultJSONArray.put(jsonObject);
}
return resultJSONArray;
}
这是怎么回事?返回的 json 中的这些反斜杠是从哪里来的?
最佳答案
看起来 jQuery 没有按照您的预期处理您的响应。 尝试添加一个
dataType:"json"
作为您的请求的选项,还要注意您的服务器端在 HTTP 响应上设置正确的 header (内容类型:application/json)
因为正如我从你的帖子中看到的,看起来你将一个字符串传递给 JSON.stringify
希望对你有帮助,祝你有美好的一天
关于JavaScript、Ajax 和 JSON : weird "xml processing" error when parsing response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45349186/