原生封裝Jsonp

2022-08-17 09:42:13 字數 772 閱讀 7812

我們平常做的頁面大部分的資料其實都是從後台獲取過來的,最常用的方法就是ajax,但是ajax不能跨域取資料,這時我們就要用到jsonp,那麼什麼是jsonp?

jsonp原理:

就是利用標籤沒有跨域的"漏洞"來達到與第三方通訊的目的,當需要通訊時,本站指令碼建立乙個元素,位址指向第三方api位址,並提供乙個**函式來接受資料,第三方產生為json資料的包裝,這樣瀏覽器會呼叫callback()函式,並傳遞解析後的json物件作為引數,本站指令碼可在callback()函式裡處理傳入的資料.

具體**如下:

function jsonp(json)

json.data = json.data || {};  //都要考慮預設情況

json.cbname = json.cbname || "";

var fnname="show"+math.random();//為了不使每個函式名一樣,給函式名加隨機數,避免了一些不必要的麻煩,

fnname=fnname.replace(".","");//隨機數會有小數點,函式名不能有小數點,替換掉

window[fnname]=function(json1);

json.data[json.cbname]=fnname;

var arr=;//建立乙個空陣列,把使用者傳入的值放進去

for(var name in json.data);

var script=document.createelement("script");

剩下的在頁面使用這個方法就好了,相信你們都會用的,再見了!

ajax和jsonp的原生封裝

最近在學ajax和跨域,於是就自己封裝了乙個,雖然有點粗糙但還是可以用的。其實jsonp的本質就是 動態建立script標籤,然後通過src屬性傳送跨域請求,然後伺服器端響應的資料格式為 函式呼叫 foo 實參 所以在傳送請求之前必須先宣告乙個函式,並且函式的名字與引數中傳遞的名字要一致。這裡宣告的...

原生的js實現jsonp的跨域封裝

jsonp是利用瀏覽器請求script檔案時不受同源策略的限制而實現的,偽造乙個script標籤,將請求資料的url賦值給script的src屬性,並將該標籤新增到html中,瀏覽器會自動傳送請求,返回的一般時一段js 即函式的呼叫 該種跨域的請求方式需要後台配合返回響應的函式執行資料 functi...

原生JS封裝Ajax外掛程式 同域 jsonp跨域

丟擲乙個問題,其實所謂的熟悉原生js,怎樣的程度才是熟悉呢?最近都在做原生js熟悉的練習。用原生js封裝了乙個ajax外掛程式,引入一般的專案,傳傳資料,感覺還是可行的。簡單說說思路,如有不正確的地方,還望指正 一 ajax核心,建立xhr物件 ajax技術的核心是xmlhttprequest物件 ...