摘要:觀察函數(shù)和函數(shù)可以用來作為觀察函數(shù),我們可以使用觀察函數(shù)的回調函數(shù)來做相應的處理。當請求開始且尚未進行其他傳輸時,會觸發(fā)的回調函數(shù)。當最后一次活動請求終止時,則會執(zhí)行通過注冊的回調函數(shù)。
對于 jQuery 通過 Ajax 方式傳遞數(shù)據(jù)時,我們還可以在過程中進行一定的處理,以便達到我們的需求。
觀察函數(shù)ajaxStart 和 ajaxStop 函數(shù)可以用來作為觀察函數(shù),我們可以使用觀察函數(shù)的回調函數(shù)來做相應的處理。
當 Ajax 請求開始且尚未進行其他傳輸時,會觸發(fā) ajaxStart 的回調函數(shù)。
當最后一次活動請求終止時,則會執(zhí)行通過 ajaxStop 注冊的回調函數(shù)。
由于觀察函數(shù)具備全局性,所以需要使用 $(document) 來調用。我們通過使用 Ajax 方法取得一個圖片的例子來測試兩個函數(shù):
當前頁面為:
同目錄下的 test.html 內容為:
點擊按鈕后希望載入圖像:
$("button").click(function() { $("div").load("test.html"); });
此時我們可以使用 ajaxStart 和 ajaxStop 函數(shù)來增加提示:
$(document).ajaxStart(function() {// alert("load a picture"); }).ajaxStop(function() { alert("show a picture"); }); $("button").click(function() { $("div").load("test.html"); });
此時點擊按鈕后,再圖像載入前先提示 load a picture,載入后提示 show a picture。
錯誤處理最常用的方式是全局的 ajaxError 方法,以上例為例,如果我們像一個不存在的頁面發(fā)送數(shù)據(jù)請求:
$(document).ajaxError(function() {// alert("load failed!"); }); $("button").click(function() { $("div").load("noexsited.html"); });
此時點擊按鈕后:
對于非 load 方法,還可以使用 fail 方法來連綴處理:
$("button").click(function() { $.get("noexsited.html", function(data) { }).fail(function(jqXHR) { alert("status is " + jqXHR.status); }); });JSONP
JSONP 即 JSON with padding,填充式 JSON,利用的是 標簽可以跨域獲取 Javascript 文件的思路,故可以跨域獲取 JSON 數(shù)據(jù)。
JSONP 的格式是把標準 JSON 文件包裝在一對圓括號中,圓括號又前置一個任意字符串。這個字符串,即所謂的 P,由請求數(shù)據(jù)的客戶端來決定。
同樣是上例的按鈕,首先我們將外域頁面 otherdomain.com/index.php 內容設置為:
我們使用特殊的占位符 ? 來實現(xiàn)跨域獲取 JSON 數(shù)據(jù):
$("button").click(function() { $.getJSON("otherdomain.com/index.php?callback=?", function(data) { console.log(data); }); });數(shù)據(jù)獲取成功。
參考http://book.douban.com/subject/24669823/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/78181.html
摘要:在前一篇介紹的數(shù)據(jù)加載中的例子都是從靜態(tài)的文件中取得數(shù)據(jù),而更大的價值在于與后端服務器進行數(shù)據(jù)傳遞,動態(tài)地請求和發(fā)送數(shù)據(jù)。首先用方式請求數(shù)據(jù)方式點擊標簽后,當前頁面為數(shù)據(jù)請求成功。 在前一篇介紹 jQuery Ajax 的數(shù)據(jù)加載中的例子都是從靜態(tài)的文件中取得數(shù)據(jù),而 Ajax 更大的價值在于與后端服務器進行數(shù)據(jù)傳遞,動態(tài)地請求和發(fā)送數(shù)據(jù)。 請求數(shù)據(jù) 我們可以使用 GET、POST...
摘要:同樣將其綁定在按鈕點擊事件上查看結果為這里需要注意,如果文檔內的格式錯誤,雖然不會報錯,但是將無法執(zhí)行回調函數(shù)。 Ajax 通俗來講即不需要刷新頁面即可從服務器或客戶端上加載數(shù)據(jù),當然這些數(shù)據(jù)的格式是多種多樣的。 加載 HTML 我們通常使用加載 HTML 的方法來加載 HTML 片段,并插入到指定位置,假設當前頁面為: load showImg(http://segmen...
摘要:事件對象是一種結構,它會在元素獲得處理事件的機會時傳遞給調用的事件處理程序。事件對象的屬性指的是事件目標,它將保存發(fā)生事件的目標元素。所以,接下來我們就要想辦法改變事件過程來阻止這個行為。 在 《細說 jQuery 事件篇(三) - 事件傳播》 中提到了事件冒泡可能造成的弊端,當時舉了 mouseout 的例子,對于 mouseout 這個特殊情況,我們可以用 hover 方法來解決,...
摘要:是如何決定由哪個元素來處理事件的,以及又是如何優(yōu)化處理這個問題的,這些都涉及到了事件傳播。事件冒泡的弊端事件冒泡可能會導致意料之外的行為,例如在響應事件時,依舊是上例,當為最外層的添加一個事件。使用方法可以避免事件傳播導致的問題。 Javascript 是如何決定由哪個元素來處理事件的,以及 jQuery 又是如何優(yōu)化處理這個問題的,這些都涉及到了事件傳播。 事件傳播策略 當頁面內...
摘要:添加全局函數(shù)所謂全局函數(shù)就是對象的方法,例如在一篇中介紹的等方法。 當我們希望將一些功能性代碼重復使用,可以將其打包成一個 jQuery 插件來使用。 使用 $ 別名 首先我們在編寫插件時必須保證 jQuery 庫已經載入,但是我們不能保證 $ 一定可用,為了使用 $ 別名,我們可以利用 IIFE (Immediately Invoked Function Expression),...
閱讀 2385·2021-11-15 11:37
閱讀 2637·2021-09-23 11:21
閱讀 2967·2021-09-07 10:11
閱讀 3174·2019-08-30 15:53
閱讀 2834·2019-08-29 15:13
閱讀 1618·2019-08-26 13:57
閱讀 1111·2019-08-26 12:23
閱讀 2450·2019-08-26 11:51