Rumah >Tutorial CMS >WordTekan >Panduan Ringkas jQuery: Meneroka jQuery dan Ajax
Fungsi ajax()
jQuery ialah tahap abstraksi terendah yang tersedia untuk XMLHttpRequest (aka AJAX). Semua fungsi AJAX jQuery lain (seperti load()
) menggunakan fungsi ajax()
. Menggunakan fungsi ajax()
menyediakan fungsi yang paling berkuasa untuk XMLHttpRequests
. jQuery juga menyediakan abstraksi peringkat tinggi lain untuk melaksanakan jenis XMLHttpRequests
yang sangat khusus. Fungsi ini pada asasnya adalah pintasan kepada kaedah ajax()
. ajax()
函数是可用于 XMLHttpRequest(又名 AJAX)的最低抽象级别。所有其他 jQuery AJAX 函数(例如 load()
)都利用 ajax()
函数。使用 ajax()
函数为 XMLHttpRequests
提供了最强大的功能。 jQuery 还提供了其他更高级别的抽象来执行非常特定类型的 XMLHttpRequests
。这些函数本质上是 ajax()
方法的快捷方式。
这些快捷方法是:
加载()
<code>get()
<code>getJSON()
<code>getScript()
<code>post()
需要注意的是,虽然快捷方式有时很好,但它们都在幕后使用 ajax()
。而且,当您需要 jQuery 在 AJAX 方面提供的所有功能和自定义功能时,您应该使用 ajax()
方法。
注意:默认情况下,ajax()
和 load()
AJAX 函数均使用 GET
HTTP 协议。
带有填充的 JSON (JSONP) 是一种技术,允许 HTTP 请求(返回 JSON)的发送者为使用 JSON 对象作为函数参数进行调用的函数提供名称。该技术不使用 XHR。它使用脚本元素,因此可以将数据从任何站点拉入任何站点。目的是为了规避XMLHttpRequest的同源策略限制。
使用 <code>getJSON() jQuery 函数,当 URL 中添加 JSONP 回调函数时,您可以从另一个域加载 JSON 数据。作为示例,以下是使用 Flickr API 的 URL 请求的样子。
<span class="sgc-100">http://api.flickr.com/services/feeds/photos_public.gne?tags=resig&tagmode=all&format=json&jsoncallback</span>
=?
?
值用作快捷方式,告诉 jQuery 调用作为 <code>getJSON() 函数的参数传递的函数。如果您不想使用此快捷方式,可以将 ?
替换为另一个函数的名称。
下面,我使用 Flickr JSONP API 拉入一个网页,其中包含带有“resig”标签的最新照片。请注意,我使用的是 ?
快捷方式,因此 jQuery 将简单地调用我提供的 <code>getJSON() 函数的回调函数。传递给回调函数的参数是请求的JSON数据。
<!DOCTYPE html> <html lang="en"> <body> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script> (function($){ $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=resig&tagmode=all&format=json&jsoncallback=?", // Using ? just means call the callback function provided function (data) { // Data is the JSON object from Flickr $.each(data.items, function (i, item) { $('<img />').attr("src", item.media.m).appendTo('body'); if (i == 30) return false; }); }); })(jQuery); </script> </body> </html>
注意:请确保检查您所使用的服务的 API 以便正确使用回调。例如,Flickr 使用名称 jsoncallback=?
,而 Yahoo!和 Digg 使用名称 callback=?
。
执行 XHR 请求时,Internet Explorer 将缓存响应。如果响应包含具有较长保质期的静态内容,则缓存可能是一件好事。但是,如果请求的内容是动态的并且可能随时发生变化,您将需要确保浏览器不会缓存该请求。一种可能的解决方案是将唯一的查询字符串值附加到 URL 的末尾。这将确保浏览器对于每个请求请求唯一的 URL。
// Add unique query string at end of the URL url: 'some?nocache='+(newDate()).getTime()
另一个解决方案(更多的是全局解决方案)是默认设置所有 AJAX 请求以包含我们刚才讨论的无缓存逻辑。为此,请使用 ajaxSetup
函数全局关闭缓存。
$.ajaxSetup({ cache: false // True by default. False means caching is off. });
现在,为了用单独的 XHR 请求覆盖此全局设置,您只需在使用 ajax()
函数时更改缓存选项即可。下面是使用 ajax()
Muat()
<code>get()
<code>getJSON()
<code>getScript()
<code>post()
ajax()
di belakang tabir. Dan, apabila anda memerlukan semua ciri dan penyesuaian yang ditawarkan oleh jQuery dari segi AJAX, anda harus menggunakan kaedah ajax()
. #🎜🎜#
#🎜🎜#Nota: Secara lalai, kedua-dua fungsi AJAX ajax()
dan load()
menggunakan GET
protokol HTTP. #🎜🎜#
<span class="sgc-100">http://api.flickr.com/services/feeds/photos_public.gne?tags=resig&tagmode=all&format=json&jsoncallback</span>
=?
#🎜🎜#Nilai ?
digunakan sebagai pintasan untuk memberitahu jQuery supaya memanggil fungsi yang diluluskan sebagai argumen kepada fungsi <code>getJSON(). Jika anda tidak mahu menggunakan pintasan ini, anda boleh menggantikan ?
dengan nama fungsi lain. #🎜🎜#
#🎜🎜# Di bawah, saya menggunakan API JSONP Flickr untuk memasukkan halaman web yang mengandungi foto terbaharu yang ditandakan dengan "resign". Ambil perhatian bahawa saya menggunakan pintasan ?
, jadi jQuery hanya akan memanggil fungsi panggil balik fungsi <code>getJSON() yang saya sediakan. Parameter yang dihantar kepada fungsi panggil balik ialah data JSON yang diminta. #🎜🎜#
$.ajaxSetup ({ cache: false // True by default. False means caching is off. }); jQuery.ajax({ cache: true, url: 'some', type: 'POST' } );#🎜🎜#Nota: Sila pastikan anda menyemak API perkhidmatan yang anda gunakan untuk menggunakan panggilan balik dengan betul. Contohnya, Flickr menggunakan nama
jsoncallback=?
, manakala Yahoo! dan Digg menggunakan nama callback=?
. #🎜🎜#
ajaxSetup
. #🎜🎜#
rrreee
#🎜🎜#Kini, untuk mengatasi tetapan global ini dengan permintaan XHR individu, anda hanya boleh menukar pilihan cache apabila menggunakan fungsi ajax()
. Di bawah ialah contoh kod yang melaksanakan permintaan XHR menggunakan fungsi ajax()
, yang mengatasi tetapan global dan menyimpan cache permintaan itu. #🎜🎜#
rrreee#🎜🎜#Atas ialah kandungan terperinci Panduan Ringkas jQuery: Meneroka jQuery dan Ajax. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!