[英]JSON String parsing in javascript?
我正在使用 ajax 在 servlet 上發出請求並接收 json 字符串
servlet代碼 //服務器端
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Content-Type", "text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
Gson gson = new Gson();
try {
ArrayList<SearchedCourse> searchedCourses = null;
int semesterNo = request.getParameter("semesterNo");
searchedCourses = //Using function to retrieve data from DB and return an ArrayList
String courses = gson.toJson(searchedCourses);
out.write(courses);
}
}
} finally {
out.close();
}
}
這是返回 json 字符串“我用螢火蟲復制它”
[{"courseNumber":1619,"courseNo":"HADTA1100","courseName":"قرآن كريم (1) جزء عم","courseExamDate":"Aug 21, 2011","courseExamTimeFrom":"14:30","courseExamTimeTo":"15:30"},{"courseNumber":1663,"courseNo":"HADTB1100","courseName":"قرآن كريم (2) جزء تبارك","courseExamDate":"Aug 23, 2011","courseExamTimeFrom":"14:30","courseExamTimeTo":"15:30"}]
我使用下面的代碼在客戶端解析 Json 字符串
jQuery.ajax({
url: 'auth/json/AvailableCoursesGetter',
type: "GET" ,
dataType: "json",
data: {
'semesterNo': 20112
},
success: function(data) {
for (var i = 0, len = data.length; i < len; i++) {
document.write(data[i].courseNumber);
}
}
});
它在 Mozilla FireFox4 上運行良好,但在 Google Chrome 和 IE 上它不顯示任何東西
有什么幫助嗎?
@Eli 關於使用for in
是一個壞主意是正確的,但在我看來,代碼應該可以工作。 以下 jsFiddle 在 IE9 中工作: http://jsfiddle.net/shaneblake/arhB7/
您確定數據以正確的格式返回而不是字符串嗎? 您是否嘗試過使用JSON.parse(data)
來確保?
我剛剛在您的 servlet 中看到您的 output 以下 header :
response.setHeader("Content-Type", "text/html;charset=UTF-8");
嘗試將內容類型更改為application/json
。
使用for in
語法遍歷數組被認為是不好的做法。 試試這個:
for (var i = 0, len = data.length; i < len; i++) {
console.log(data[i].courseNumber);
}
如果您的頁面以任何方式擴展了 Array 原型,那么使用for in
將導致您的腳本遍歷這些擴展屬性,如果這些屬性在您的實際值之前被命中,則很可能會導致錯誤。 避免這種情況的最好方法是使用傳統的 for 循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.