jquery原始碼對jsonp的解讀

2021-08-02 08:41:33 字數 2538 閱讀 5232

/**

* created by ann on 2017/6/8.

*/基本語法

$.ajax().done(function(data) )

首先要了解ajaxsetip方法

ajax方法會將兩個引數進行覆蓋,拷貝,最後返回

ajaxsetup:function( target, settings ) ,

functionajaxextend( target, src ) ;

for( keyinsrc ) ) ) )[ key ] = src[ key ];

} }

if( deep )

returntarget;

}jsoncallback分兩種情況

一.不穿引數:

$.ajax().done(function(data) )

// default jsonp settings

1.首先在jquery內部執行

進入ajax內部執行

s = jquery.ajaxsetup( {}, options ),

jquery.ajaxsetup(

此時setting不存在

執行 ajaxextend( jquery.ajaxsettings,

target );

ajaxsettings

在jquery初始會有定義

ajaxsettings: ,

此時target是我們傳遞的引數

此時url會被覆蓋,平增加datatype引數

ajaxsettings此時是:

ajaxsettings:

},jquery的ajaxsetup方法會使用自定義的jsonpcallback

,返回如

callback = jquery21402091185757493652_1496931076460 & _ = 1496931076461

其中對應方法是

jquery21402091185757493652_1496931076460 =

》jqueryexpando: "jquery" + ( version + math.random() ).replace(/\d/g

, "")

產生1496931076461 =

varnonce = jquery.now();

2.對上面方法進行呼叫

callbackname = s.jsonpcallback = jquery.isfunction(s.jsonpcallback)

s.jsonpcallback():s.jsonpcallback

;3.定義該方法

overwritten = window[callbackname];

window[callbackname] =function() ;

4.動態產生乙個script標籤並引用該鏈結

向後傳送的url:

5.請求完成後通過上述方法刪除script節點

(elem.parentnode)

elem.parentnode.removechild(elem);

}二.傳參

$.ajax().done(function(data) )

s = jquery.ajaxsetup( {}, options ),

如第一種情況執行之後:

ajaxsettings:

},向後台傳送的url:"http://localhost:18080/get?callback=baiducallback&_=1496934184545"

總結:傳參與否看業務的需要

傳參的大部分情況是

後台沒有處理能力,只是單純的請求乙個json檔案

例如baiducallback()

而後台可以處理引數

varstr = req.query.callback + "(" + json.stringify(data)"; //jsonp

console.log('jsonp: '+str);

res.end(str);

無需傳遞引數

jQuery原始碼分析

工具 版本說明 版本號備註 jquery 2.1.1 sublime 3jquery function selector,context jquery.fn jquery.prototype 快速匹配正則 不加g 不光匹配整體項還會匹配到子項 rquickexpr s w w w init jque...

jquery原始碼解析

jquery 原始碼解析,參看 是jquery 3.0版本 入口jquery.js包含core.js,以及jquery的各類功能的組合,包括selector,ajax等等 然後將jquery物件匯出到全域性的jquery符號,以及 符號 確定jquery物件是個函式,這個函式生成出來的資料是物件 建...

jQuery原始碼分析

一 jquery如何做到不汙染變數名並暴露出 供使用者使用 jquery將變數和 寫進立即執行函式,通過函式來包裹所有的變數和方法,再在這個立即執行函式上將 jquery方法繫結到window上,就可以讓使用者使用到jq方法了。二 jquery是如何做到 jquery 的?function wind...