淺析jQuery Ajax請求參數(shù)和返回數(shù)據(jù)的處理
剛接觸學(xué)會用jQuery ajax的時候,覺得真東西好神奇,這樣就可以把數(shù)據(jù)取回來了啊。然后我可以把取回來的數(shù)據(jù)渲染到頁面上,一顆賽艇。
之前很早接觸到項(xiàng)目,并不知道怎么優(yōu)雅的去用jquery ajax(現(xiàn)在也不優(yōu)雅);
那個時候看別人寫的代碼
有
$.post("","",...)
也有
$.get("","",...)
還有
$.ajax()
當(dāng)然現(xiàn)在知道點(diǎn),這些寫法都是一個意思,還是習(xí)慣用 $.ajax() 寫寫吧。
之前的數(shù)據(jù)處理,發(fā)送數(shù)據(jù)請求(json的數(shù)據(jù)格式),然后自己通過下面的方式
var request = {}; request.name = $(".name").val(); request.age = $(".age").val(); request.sex = $(".sex").val(); //...
當(dāng)時表單發(fā)送的參數(shù)項(xiàng)少,所以沒覺得什么,到后來一個表單很多項(xiàng)數(shù),也這么寫,結(jié)果 request 就手工寫了好多行,雖然能用吧,但是看看這樣的代碼就覺著哪里不對勁吧,至少很不“優(yōu)雅”。
后來,發(fā)現(xiàn)其實(shí)jquery有個 serialize 的方法可以序列化表單數(shù)據(jù),可以省事很多。
處理返回數(shù)據(jù),渲染到頁面上去。
之前的做法也是和上面一模一樣的吧,返回的數(shù)據(jù)是json數(shù)據(jù)格式的,然后分別取值賦值給頁面元素,所以代碼往往是這樣的。
如果數(shù)據(jù)再多點(diǎn),真的是感覺略難看。其實(shí)應(yīng)該是有更好的做法的,返回的是一個json對象,所以我們可以通過遍歷對象的屬性值取到所有值然后依次渲染到頁面對應(yīng)元素即可。
對象遍歷可以用 for-in 來寫(有更好的方法來寫么?)
$.ajax({ //... success:function(result){ for(var v in result){ // 如果渲染的元素都是統(tǒng)一的輸入框形式的話, $("form").find("input[name="+ v +"]").val(result[v]); // 如果有其他元素 則另外單獨(dú)校驗(yàn)處理 } } })
上面name(或者其他tag在頁面中先寫好,和返回數(shù)據(jù)的屬性一致)。
jQuery中ajax的4種常用請求方式
1.$.ajax()返回其創(chuàng)建的 XMLHttpRequest 對象。
$.ajax() 只有一個參數(shù):參數(shù) key/value 對象,包含各配置及回調(diào)函數(shù)信息。詳細(xì)參數(shù)選項(xiàng)見下。
如果你指定了 dataType 選項(xiàng),請確保服務(wù)器返回正確的 MIME 信息,(如 xml 返回 "text/xml")。
實(shí)例:
保存數(shù)據(jù)到服務(wù)器,成功時顯示信息。
$.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.通過遠(yuǎn)程 HTTP GET 請求載入信息。
這是一個簡單的 GET 請求功能以取代復(fù)雜 $.ajax 。請求成功時可調(diào)用回調(diào)函數(shù)。如果需要在出錯時執(zhí)行函數(shù),請使用 $.ajax。
實(shí)例:
$.get("test.cgi", { name: "John", time: "2pm" }, function(data){ alert("Data Loaded: " + data); });
3. 通過遠(yuǎn)程 HTTP POST 請求載入信息。
這是一個簡單的 POST 請求功能以取代復(fù)雜 $.ajax 。請求成功時可調(diào)用回調(diào)函數(shù)。如果需要在出錯時執(zhí)行函數(shù),請使用 $.ajax。
實(shí)例:
$.post("/Resources/addfriend.ashx", { "fid": fids, "fname": fnames, "tuid": tuids, "tuname": tunames }, function (data) { if (data == "ok") { alert("添加成功!"); } })
4.通過 HTTP GET 請求載入 JSON 數(shù)據(jù)。
實(shí)例:
$.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; }); });
以上內(nèi)容是小編給大家介紹的jQuery Ajax請求參數(shù)和返回數(shù)據(jù)的處理,希望對大家有所幫助!
相關(guān)文章
jquery獲取file表單選擇文件的路徑、名字、大小、類型
今天小編就為大家分享一篇關(guān)于jquery獲取file表單選擇文件的路徑、名字、大小、類型,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01jquery?追加元素append、prepend、before、after用法與區(qū)別分析
在jquery中append、prepend、before、after方法是對數(shù)據(jù)元素節(jié)點(diǎn)的操作系列方法了,這些方法大家了解嗎?如果不了解就可以和小編來看看它們用法2016-12-12jquery 構(gòu)造函數(shù)在表單提交過程中修改數(shù)據(jù)
這篇文章主要介紹了jquery 構(gòu)造函數(shù)在表單提交過程中修改數(shù)據(jù)的方法,十分簡單實(shí)用,有需要的小伙伴可以參考下。2015-05-05JQuery form表單提交前驗(yàn)證單選框是否選中、刪除記錄時驗(yàn)證經(jīng)驗(yàn)總結(jié)(整理)
這篇文章主要介紹了JQuery form表單提交前驗(yàn)證單選框是否選中、刪除記錄時驗(yàn)證經(jīng)驗(yàn)總結(jié),非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-06-06jquery 實(shí)現(xiàn)密碼框的顯示與隱藏示例代碼
密碼框的顯示隱藏有多種實(shí)現(xiàn)方法,在將為大家介紹下如何使用jquery實(shí)現(xiàn),感興趣的朋友可以參考下2013-09-09jQuery使用jsonp實(shí)現(xiàn)百度搜索的示例代碼
這篇文章主要介紹了jQuery使用jsonp實(shí)現(xiàn)百度搜索,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07遮罩層點(diǎn)擊按鈕彈出并且具有拖動和關(guān)閉效果(兩種方法)
實(shí)現(xiàn)點(diǎn)擊按鈕彈出遮罩層,點(diǎn)擊按鈕可以隨意拖動和關(guān)閉。接下來,通過本篇文章給大家介紹遮罩層點(diǎn)擊按鈕彈出并且具有拖動和關(guān)閉效果,需要的朋友可以參考下2015-08-08