ajax異步獲取請求,獲得json數組后對數組的遍歷


如果響應數據是以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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM