關(guān)于jQuery.ajax()的jsonp碰上post詳解
前言
以前一直以為當(dāng)$.ajax()的 dataType設(shè)置為jsonp時(shí),其method(請(qǐng)求方法)無(wú)論怎么設(shè)置,都會(huì)變成get,直到前兩天遇到了一個(gè)坑。
下面來一起看看詳細(xì)的介紹:
關(guān)于跨域請(qǐng)求與jsonp
- 跨域:由于受到同源策略(協(xié)議、域名、端口三者必須全部相同)的影響,ajax請(qǐng)求會(huì)受到限制,要突破這種限制,跨域便產(chǎn)生了??缬虻慕鉀Q方案有多種,這里不展開闡述,只是針對(duì)GET請(qǐng)求中的jsonp跨域解決方案做一下說明。
- jsonp,本質(zhì)上jsonp不是xhr異步請(qǐng)求,就是請(qǐng)求了一個(gè)js文件,因此在chrome的network面板中的xhr標(biāo)簽下看不到j(luò)sonp的跨域請(qǐng)求,在js標(biāo)簽下能看到。就是利用script標(biāo)簽中src不受同源策略的限制,前端定義了回調(diào)函數(shù),請(qǐng)求的js腳本中獲取數(shù)據(jù),并執(zhí)行前端的回調(diào)函數(shù),因此前后端需要統(tǒng)一定義下回調(diào)函數(shù)名。
$.ajax中jsonp,$.ajax對(duì)jsonp進(jìn)行了封裝看起來像是ajax請(qǐng)求。由于jsonp是針對(duì)get請(qǐng)求的跨域解決,因此之前的經(jīng)驗(yàn)告訴我,即使type設(shè)置了post,在jsonp的時(shí)候,也會(huì)自動(dòng)轉(zhuǎn)換成get,直到有一天踩了個(gè)坑。翻看$.ajax模塊的源碼發(fā)現(xiàn),只有去手動(dòng)設(shè)置crossDomain為true,或者實(shí)際上是跨域,才會(huì)設(shè)置為get。否則還是填入的type


結(jié)論:
手動(dòng)設(shè)置crossDomain為true,或者真的是跨域,才會(huì)修改type為GET,否則還是傳入的type參數(shù)
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
使用jquery hover事件實(shí)現(xiàn)表格的隔行換色功能示例
hover(over,out)一個(gè)模仿懸停事件的方法,下面一個(gè)示例為大家詳細(xì)介紹下使用jquery實(shí)現(xiàn)表格的隔行換色功能,感興趣的朋友可以參考下2013-09-09
jQuery使用ajax跨域獲取數(shù)據(jù)的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄猨Query使用ajax跨域獲取數(shù)據(jù)的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05
Jquery知識(shí)點(diǎn)一 Jquery的ready和Dom的onload的區(qū)別
onload是所有dom元素創(chuàng)建完畢,圖片、css等都加在完畢后才觸發(fā) ready則是dom元素創(chuàng)建完畢后就被觸發(fā)2011-01-01
jQuery選擇器中含有空格的使用示例及注意事項(xiàng)
選擇器中的空格是不容忽視的,多一個(gè)空格或少一個(gè)空格也許得到的結(jié)果會(huì)截然不同的,下面以一個(gè)示例為大家詳細(xì)介紹下到底有什么不同,感興趣的朋友額可以參考下2013-08-08
jquery 與NVelocity 產(chǎn)生沖突的解決方法
有時(shí)候使用jquery 與NVelocity的時(shí)候,會(huì)產(chǎn)生沖突,下面是具體的解決方法,需要的朋友可以參考下。2011-06-06
jquery.cookie實(shí)現(xiàn)的客戶端購(gòu)物車操作實(shí)例
這篇文章主要介紹了jquery.cookie實(shí)現(xiàn)的客戶端購(gòu)物車操作,結(jié)合實(shí)例形式分析了jQuery基于cookie存儲(chǔ)及操作數(shù)據(jù)實(shí)現(xiàn)購(gòu)物車功能的技巧,需要的朋友可以參考下2015-12-12
JQuery單選按鈕Radio和復(fù)選框checkbox的操作代碼
這篇文章主要介紹了JQuery單選按鈕Radio和復(fù)選框checkbox的操作,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
jQuery獲取radio選中項(xiàng)的值實(shí)例
本文主要介紹jQuery獲取radio選中項(xiàng)的值的方法,希望能幫到大家,有需要的朋友可以參考一下。2016-06-06
jquery使用on綁定a標(biāo)簽無(wú)效 只能用live解決
下面小編就為大家?guī)硪黄猨query使用on綁定a標(biāo)簽無(wú)效 只能用live解決。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06

