首頁  >  文章  >  web前端  >  jQuery Ajax非同步處理Json資料詳解_jquery

jQuery Ajax非同步處理Json資料詳解_jquery

WBOY
WBOY原創
2016-05-16 17:17:24993瀏覽

先我們來看一個官方的實例
使用AJAX 請求來獲得JSON 數據,並輸出結果:

複製程式碼 程式碼如下:

$("button").click(function(){
  $.getJSON("demo_ajax_json.js",function(result){
 , function(i, field){
      $("div").append(field " ");
    });
  });
});
🎜>函數是簡寫的Ajax 函數,等價於:


複製程式碼 程式碼如下:
程式碼如下:
$.ajax({
  url: url,
  data: data,
  success: callback,
  dataType: json
});
發送🎜>到伺服器的資料可作為查詢字串附加到URL 之後。如果 data 參數的值是物件(映射),那麼在附加到 URL 之前將轉換為字串,並進行 URL 編碼。
傳遞給 callback 的返回數據,可以是 JavaScript 對象,或以 JSON 結構定義的數組,並使用 $.parseJSON() 方法進行解析。
從test.js 載入JSON 資料並顯示JSON 資料中一個name 欄位資料:

複製程式碼 程式碼如下:
$.getJSON("test.js", function(json){
  alert("JSON Data: " json.users[3].name);
});
 
一個與asp.net實例
先給出要傳的json資料:[{"demoData":"This Is The JSON Data"}]
1,使用普通的aspx頁面來處理
我覺得這種方式處理起來是最簡單的了,看下面的程式碼吧

複製程式碼吧 代碼如下:
$.ajax({
                                        type: "post",
                                        url: "Default.aspx",
                                        dataType: "json",
success: function (data) {
                          (data[0].demoData);
                                                           error: function (XMLHttpRequest, textStatus, errorThrown) { >                                                                            });


這裡是後台傳遞資料的程式碼
複製程式碼 程式碼如下:


程式碼如下:


Response. Clear();
Response.Write("[{"demoData":"This Is The JSON Data"}]");
Response.Flush();
Response.End();

這種處理的方式將傳遞過來的數據直接解析為json數據,也就是說這裡的前台js代碼可能直接把這些數據解析成json對象數據,而並非字符串數據,如data [0].demoData,這裡就直接使用了這個json物件資料2,使用webservice(asmx)來處理這種處理方式就不會將傳遞過來的數據當成是json物件數據,而是作為字串來處理的,如下程式碼
複製程式碼


程式碼如下:


$.ajax ({    
type: "post",    
url: "JqueryCSMethodForm.asmx/GetDemoData",    
dataType: "json",/*這句話可用,沒有影響*/Typesuccess: function (data) {    
$("input#showTime").val(eval('(' data.d ')')[0 ].demoData);
//這裡有兩種對資料的轉換方式,兩處理方式的效果一樣//$("input#showTime").val(eval(data.d)[0].demoData );
},    
error: function (XMLHttpRequest, textStatus, errorThrown) {    
alert(errorTh n); 🎜>下面這裡asmx的方法碼


複製程式碼 程式碼如下:
[WebMethodMethod static string GetDemoData() {    
return "[{"demoData":"This Is The JSON Data"}]";    
就把這個處理方式傳遞回來的json數據當成了字串來處理的,所在就要對這個數據進行eval的處理,這樣才能成為真正的json對象數據,
我們先來看一下html模板:



複製程式碼

程式碼如下:

 
               
                   
                   
                   
                   
                   
                   
                   
                   
                   
               
               
                   
                   
                   
                   
                   
                   
          🎜>

 一定要注意的就是裡面所有的id屬性,這是一個關鍵。再來看看AJAX請求和綁定資料的程式碼



複製程式碼
程式碼如下: 程式碼如下:


程式碼如下:            type: "get",//使用get方法存取後台
          url: "BackHandler.ashx",//要存取的後台位址
            data: "pageIndex=" pageIndex,//要傳送的資料
       隱藏loading提示
            success: function(msg){//msg為返回的數據,在這裡做資料綁定
                $.each(data, function(i, n){
                    var row = $("#template").clone();
     .text(n.訂單ID);
                    row.find(" #CustomerID").text(n.顧客ID);
                    row.find("#Employee    row.find("#OrderDate").text(ChangeDate (n.訂購日期));
                    if(n.出貨日期!== undefined) row.find             row. find("#ShippedName").text(n.貨主名稱);
                    row.find()       row.find("#ShippedCity"). text(n.貨主城市);
                    row.find("#more").html("");                   
                               row.appendTo("#datas");//新增至範本的容器內
                });


這是jQuery的AJAX方法,回傳資料並不複雜,主要說明一下怎麼把資料依範本的定義顯示到頁面上。首先是這個「var row = $("#template").clone();」先把模板複製一份,接下來row.find("#OrderID").text(n.訂單ID);,表示找到id=OrderID的標記,設定它的innerText為對應的數據,當然也可以設定為html格式的數據。或是透過外部的函數把資料轉換成需要的格式,例如這裡row.find("#OrderDate").text(ChangeDate(n.訂購日期));有點伺服器控制項做模板綁定資料的感覺。
所有的這些,都是放在一個靜態的頁面裡,只透過AJAX方法從後台取得數據,所有html程式碼如下:
複製程式碼 程式碼如下:




    test1
   
   


   

         

           

            value=" < " /> value=" >>  " />
             
           

                        订单ID

                        客户ID

                        雇员ID

                        订购日期

                        发货日期

                        货主名称

                        货主地址

                        货主城市

                        更多信息

                   

                   

                   

                   

                   


                   

                   

                  

                   

               
                   
                   
                   
                   
                   
                   
                   
                   
                   
               
               
                   
                   
                   
                  
                      
                    
                  
                 div>
       

    >
       
   

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

                        订单ID

                        客户ID

                        雇员ID

                        订购日期

                        发货日期

                        货主名称

                        货主地址

                        货主城市

                        更多信息