剛接觸學會用jQuery ajax的時候,覺得真東西好神奇,這樣就可以把資料取回了啊。然後我可以把取回的資料渲染到頁面上,一顆賽艇。
之前很早接觸到項目,並不知道怎麼優雅的去用jquery ajax(現在也不優雅);
那時候看別人寫的程式碼
有
$.post("","",...)
也有
$.get("","",...)
還有
$.ajax()
當然現在知道點,這些寫法都是一個意思,還是習慣用 $.ajax() 寫寫吧。
之前的資料處理,傳送資料請求(json的資料格式),然後自己透過下面的方式
var request = {}; request.name = $(".name").val(); request.age = $(".age").val(); request.sex = $(".sex").val(); //...
當時表單發送的參數項少,所以沒覺得什麼,到後來一個表單很多項數,也這麼寫,結果request 就手工寫了好多行,雖然能用吧,但是看看這樣的程式碼就覺著哪裡不對勁吧,至少很不「優雅」。
後來,發現其實jquery有個 serialize 的方法可以序列化表單數據,可以省事很多。
處理回傳數據,渲染到頁面上去。
之前的做法也是跟上面一模一樣的吧,回傳的資料是json資料格式的,然後分別取值賦值給頁面元素,所以程式碼往往是這樣的。
如果數據再多點,真的是感覺略難看。其實應該是有更好的做法的,返回的是一個json對象,所以我們可以透過遍歷對象的屬性值取到所有值然後依序渲染到頁面對應元素即可。
物件遍歷可以用 for-in 來寫(有更好的方法來寫麼?)
$.ajax({ //... success:function(result){ for(var v in result){ // 如果渲染的元素都是统一的输入框形式的话, $("form").find("input[name="+ v +"]").val(result[v]); // 如果有其他元素 则另外单独校验处理 } } })
上面name(或其他tag在頁面中先寫好,和回傳資料的屬性一致)。
jQuery中ajax的4種常用請求方式
1.$.ajax()傳回其建立的 XMLHttpRequest 物件。
$.ajax() 只有一個參數:參數 key/value 對象,包含各配置及回呼函數資訊。詳細參數選項請見下。
如果你指定了 dataType 選項,請確保伺服器傳回正確的 MIME 訊息,(如 xml 返回 "text/xml")。
實例:
儲存資料到伺服器,成功時顯示資訊。
$.ajax({ type: "post", dataType: "html", url: '/Resources/GetList.ashx', data: dataurl, success: function (data) { if (data != "") { $("#pager").pager({ pagenumber: pagenumber, pagecount: data.split("$$")[1], buttonClickCallback: PageClick }); $("#anhtml").html(data.split("$$")[0]); } } });
2.透過遠端 HTTP GET 請求載入資訊。
這是一個簡單的 GET 請求功能以取代複雜 $.ajax 。請求成功時可呼叫回調函數。如果需要在出錯時執行函數,請使用 $.ajax。
實例:
$.get("test.cgi", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); });
3. 透過遠端 HTTP POST 請求載入資訊。
這是一個簡單的 POST 請求功能以取代複雜 $.ajax 。請求成功時可呼叫回調函數。如果需要在出錯時執行函數,請使用 $.ajax。
實例:
$.post("/Resources/addfriend.ashx", { "fid": fids, "fname": fnames, "tuid": tuids, "tuname": tunames }, function (data) { if (data == "ok") { alert("添加成功!"); } })
4.透過 HTTP GET 請求載入 JSON 資料。
實例:
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("<img/>").attr("src", item.media.m).appendTo("#images"); if ( i == 3 ) return false; }); });
以上內容是小編給大家介紹的jQuery Ajax請求參數和回傳資料的處理,希望對大家有幫助!