关于$.getJson
這是一個(gè)Ajax函數(shù)的縮寫,這相當(dāng)于:
| 1 2 3 4 5 6 | $.ajax({ dataType: "json", url: url, data: data, success: success }); |
數(shù)據(jù)會(huì)被附加到一個(gè)查詢字符串的URL中,發(fā)送到服務(wù)器。如果該值的data參數(shù)是一個(gè)普通的對(duì)象,它會(huì)轉(zhuǎn)換為一個(gè)字符串并使用URL編碼,然后才追加到URL中。
大多數(shù)情況下都會(huì)指定一個(gè)請(qǐng)求成功后的回調(diào)函數(shù):
| 1 2 3 4 5 6 7 8 9 10 11 12 | $.getJSON('ajax/test.json', function(data) { var items = []; $.each(data, function(key, val) { items.push('<li id="' + key + '">' + val + '</li>'); }); $('<ul/>', { 'class': 'my-new-list', html: items.join('') }).appendTo('body'); }); |
這個(gè)例子,當(dāng)然遵循JSON文件的結(jié)構(gòu):
| 1 2 3 4 5 | { "one": "Singular sensation", "two": "Beady little eyes", "three": "Little birds pitch by my doorstep" } |
使用這種結(jié)構(gòu),這個(gè)例子遍歷請(qǐng)求的數(shù)據(jù),建立了一個(gè)無序列表,并追加到body。
在success回調(diào)中傳入返回的數(shù)據(jù),通常是一個(gè)JavaScript對(duì)象或數(shù)組所定義的JSON結(jié)構(gòu),使用$.parseJSON()方法解析。它(success回調(diào))也傳入了響應(yīng)狀態(tài)文本。
在jQuery 1.5,,在success回調(diào)函數(shù)接收一個(gè)“jqXHR”對(duì)象?( 在jQuery 1.4中 ,它收到的是XMLHttpRequest對(duì)象)。然而,由于JSONP形式和跨域的GET請(qǐng)求不使用XHR,在這些情況下,?jqXHR和textStatus參數(shù)傳遞給success(成功)回調(diào)是 undefined 。
重要提示:?從jQuery 1.4開始,如果JSON文件包含一個(gè)語法錯(cuò)誤,該請(qǐng)求通常會(huì)靜靜的失敗。因此應(yīng)該避免頻繁手工編輯JSON數(shù)據(jù)。JSON語法規(guī)則比JavaScript對(duì)象字面量表示法更加嚴(yán)格。例如,所有在JSON中的字符串,無論是屬性或值,必須用雙引號(hào)括起來,更多JSON細(xì)節(jié)信息請(qǐng)參閱http://json.org/?。
JSONP
如果URL包含字符串“callback=?”(或類似的參數(shù),取決于服務(wù)器端 API 是如何定義的),這個(gè)請(qǐng)求被視為JSONP形式請(qǐng)求。更多jsonp數(shù)據(jù)類型的細(xì)節(jié)討論,請(qǐng)參閱$.ajax()。
The jqXHR Object(jqXHR 對(duì)象)
愚人碼頭注:估計(jì)是jQuery官方?jīng)]有及時(shí)的更新這條api,和jQuery.get() api中的jqXHR 對(duì)象描述上有差別。
從jQuery 1.5開始,所有jQuery的Ajax方法都返回一個(gè)XMLHTTPRequest對(duì)象的超集。這個(gè)通過$.get()方法返回的jQuery XHR對(duì)象,或“jqXHR,”實(shí)現(xiàn)了 Promise 接口,使它擁有 Promise 的所有屬性,方法和行為(見Deferred object獲取更多信息)。 為了便于在?$.ajax()里使用,jQuery XHR 對(duì)象$.ajax()同樣也提供了.error()?.success()和.complete()方法。這些方法接受一個(gè)函數(shù)參數(shù),用來請(qǐng)求終止時(shí)被調(diào)用。這個(gè)函數(shù)接收與$.ajax()回調(diào)函數(shù)名中相同的參數(shù)。
Promise 接口也允許jQuery的Ajax方法, 包括?$.getJSON(), 在一個(gè)單獨(dú)的請(qǐng)求中關(guān)聯(lián)到?.success(),?.complete(), 和?.error()?回調(diào)函數(shù), 甚至允許你在請(qǐng)求已經(jīng)結(jié)束后,指派回調(diào)函數(shù)。如果該請(qǐng)求已經(jīng)完成,則回調(diào)函數(shù)會(huì)被立刻調(diào)用。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | // Assign handlers immediately after making the request, // and remember the jqxhr object for this request var jqxhr = $.getJSON("example.json", function() { alert("success"); }) .success(function() { alert("second success"); }) .error(function() { alert("error"); }) .complete(function() { alert("complete"); }); // perform other work here ... // Set another completion function for the request above jqxhr.complete(function(){ alert("second complete"); }); |
Deprecation Notice(棄用通知)
jQuery 1.5中引進(jìn)的?jqXHR.success(),jqXHR.error(),jqXHR.complete()回調(diào)方法在jQuery 1.8中廢棄。你的代碼因做好準(zhǔn)備,他們最終將被移除,使用jqXHR.done(),?jqXHR.fail(), 和?jqXHR.always()代替。
Additional Notes:(其他注意事項(xiàng):)
- 由于瀏覽器的安全限制,大多數(shù)“Ajax”的要求,均采用同一起源的政策?;即無法從不同的域,子域或協(xié)議中正確接收數(shù)據(jù)。
- Script和JSONP形式請(qǐng)求不受同源策略的限制。
例子:
Example:?從 Flickr JSONP API中加載最近的四張標(biāo)簽為貓的圖片:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <!DOCTYPE html> <html> <head> <style>img{ height: 100px; float: left; }</style> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <div id="images"> </div> <script> $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", { tags: "mount rainier", tagmode: "any", format: "json" }, function(data) { $.each(data.items, function(i,item){ $("<img/>").attr("src", item.media.m).appendTo("#images"); if ( i == 3 ) return false; }); });</script> </body> </html> |
轉(zhuǎn)載于:https://www.cnblogs.com/mengziHEHE/p/3331668.html
總結(jié)
以上是生活随笔為你收集整理的关于$.getJson的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输入输出函数:
- 下一篇: Eclipse中classpath和de