欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

jquery ajax jsonp源碼

榮姿康2年前11瀏覽0評論

jQuery是一個非常流行的JavaScript框架,它簡化了JavaScript開發(fā)過程。其中,jQuery的AJAX模塊為網(wǎng)頁開發(fā)帶來了便利,可以通過Ajax發(fā)送異步請求獲得數(shù)據(jù),不必重新加載整個網(wǎng)頁。而JSONP則是一種跨域通信的技術(shù),允許從一個域名頁面上向另一個域名的頁面請求數(shù)據(jù)。下面我們來看jQuery AJAX JSONP的源碼。

//實現(xiàn)JSONP
jQuery.ajaxSetup({
jsonp: "callback", // 回調(diào)函數(shù)名的key值
jsonpCallback: function () { // 回調(diào)函數(shù)名的處理函數(shù)
return jQuery.expando + "_" + (jQuery.expandoIndex++).toString(36);
}
});
//發(fā)送JSONP請求
jQuery.ajax = function (options) {
var callbackName = options.jsonpCallback || jQuery.ajaxSettings.jsonpCallback();
var script = document.createElement("script");
var url = options.url;
if (typeof url === "string" && /\?/.test(url)) {
url += "&" + options.jsonp + "=" + callbackName;
} else {
url += "?" + options.jsonp + "=" + callbackName;
}
script.src = url;
script.async = true;
var errorHandler = options.error;
var successHandler = options.success;
window[callbackName] = function (data) {
options.success && options.success(data);
delete window[callbackName];
document.head.removeChild(script);
};
script.onerror = function () {
options.error && options.error();
delete window[callbackName];
document.head.removeChild(script);
};
document.head.appendChild(script);
};

上述代碼實現(xiàn)了jQuery中AJAX JSONP的主要功能。在ajaxSetup函數(shù)中,我們設(shè)置了jsonp回調(diào)函數(shù)的默認(rèn)值為callback,同時jsonpCallback函數(shù)由我們自己定義,用于生成隨機的回調(diào)函數(shù)名,保證每一次請求都有唯一的回調(diào)函數(shù)名。

在ajax函數(shù)中,我們首先獲取jsonp回調(diào)函數(shù)名,然后動態(tài)創(chuàng)建一個script標(biāo)簽,設(shè)置其src為請求的URL,同時將async屬性設(shè)置為true,可以讓我們不必阻塞JavaScript的運行。接下來,我們定義了成功和失敗回調(diào)函數(shù),用以處理服務(wù)器返回的數(shù)據(jù)。

最后,我們將生成的