如果響應數據是以html的形式發出來的,即
response.setContentType("text/html;charset=utf-8");
那么一般用下面這種方式,但是要注意用eval()函數將responseText轉換成一個json表達式,如下標紅代碼
1 //創建回調函數,根據相應狀態動態更新頁面 2 var xhr = getXMLHttpRequest(); //創建XMLHttpRequest對象 3 4 //通過實踐調用回調函數處理相應結果 5 xhr.onreadystatechange = function(){ 6 7 if(xhr.readyState == 4){ 8 if(xhr.status == 200){ 9 var str = xhr.responseText; 10 11 //將str強制轉換成一個表達式 12 str = eval(xhr.responseText); 13 for(var i = 0; i < str.length; i++){ 14 var option = "<option>"+str[i].name+"</option>"; 15 $("#select").append(option); 16 } 17 } 18 } 19 } 20 21 //與服務器建立連接 22 xhr.open("get", "${pageContext.request.contextPath}/provinceServlet"); 23 24 //發送請求 25 xhr.send(null);
當然,這里獲取到json表達式,后可以jquey方式遍歷,如下標紅代碼
1 //創建回調函數,根據相應狀態動態更新頁面 2 var xhr = getXMLHttpRequest(); //創建XMLHttpRequest對象 3 4 //通過實踐調用回調函數處理相應結果 5 xhr.onreadystatechange = function(){ 6 7 if(xhr.readyState == 4){ 8 if(xhr.status == 200){ 9 var str = xhr.responseText; 10 //將str強制轉換成一個表達式 11 str = eval(xhr.responseText); 12 13 $(str).each(function(){ 14 var option = "<option>"+this.name+"</option>"; 15 $("#select").append(option); 16 }); 17 } 18 } 19 } 20 21 //與服務器建立連接 22 xhr.open("get", "${pageContext.request.contextPath}/provinceServlet"); 23 24 //發送請求 25 xhr.send(null);
如果后台響應的是以application/json方式發出的,即
response.setContentType("application/json;charset=utf-8")
那么運用jquery可以進一步簡化代碼,代碼如下:
1 $.get("provinceServlet", {}, function(data){ 2 $(data).each(function(){ 3 var option = "<option>"+this.name+"</option>" ; 4 $("#select").append(option); 5 }); 6 });
順便提一句:
將普通對象封裝成json的方法是JSONOject.fromObject(obj).toString();
如果是將list對象封裝成json,那么方法是JSONArray.fromObject(list).toString();