2017-07-27 49 views
0

我使用jquery $.get()進行ajax調用,它返回一個json數組,它在一些情況下工作正常。 。但是其他情況下,在Firefox中,我得到一個奇怪的錯誤說法(德國翻譯):Javascript,Ajax和JSON:分析響應時出現奇怪的「xml處理」錯誤

XML-processing error: syntax error

這是如圖我的servlet INT Java控制檯中的JSON的結構:

[{"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中的所有反斜槓是從哪裏來的?

+0

你可以發表你的'$獲得()請求。 –

+0

您是否在代碼頁和響應源上都嘗試過UTF-8編碼? – pokeybit

回答

1

看起來你的迴應沒有像你期望的那樣被jQuery處理。 嘗試添加

dataType:"json" 

爲選項找你的要求,也照顧的是找你的服務器端設置對HTTP響應右側頭(內容類型:應用程序/ JSON)

因爲我可以找你看後,看起來像你傳遞一個字符串JSON.stringify

我希望我幫助你,有一個愉快的一天

+0

只是有同樣的問題...必須嘗試解決方案。在純枚舉的版本中不需要「dataType」。 只需添加$ .get一個新參數「json」。

 $.get(url, {"operation": "search", "searchText": searchText, "types": types, "resultNumber": 99}, function(data, status){ console.log(JSON.stringify(data)); }, "json" );