首頁 web前端 js教程 解決jQuery使用JSONP時產生的錯誤_jquery

解決jQuery使用JSONP時產生的錯誤_jquery

May 16, 2016 pm 03:28 PM
jquery jsonp 錯誤

什麼是域,簡單來說就是協定 網域名稱或位址 連接埠,3者只要有任何一個不同就表示不在同一個網域。跨域,就是在一個域中存取另一個域的資料。

如果只是載入另一個網域的內容,而不需要存取其中的資料的話,跨域是很簡單的,例如使用iframe。但如果需要從另一個網域載入並使用這些資料的話,就會比較麻煩。為了安全性,瀏覽器對這種情況有嚴格的限制,需要在客戶端和服務端同時做一些設定才能實現跨網域請求。

JSONP簡介
JSONP(JSON with Padding)是一種常用的跨域手段,但只支援JS腳本和JSON格式的資料。顧名思義,JSONP是利用JSON作為墊片,從而實現跨域請求的一種技術手段。其基本原理是利用HTML的<script></script>標籤天生可以跨域這一特點,用其加載另一個域的JSON數據,加載完成後會自動運行一個回調函數通知調用者。此過程需要另一個域的服務端支持,所以這種方式實現的跨域並不是任意的。

JQuery對JSONP的支援
JQuery的Ajax物件支援JSONP方式的跨域請求,方法是將crossDomain參數指定為true並且將dataType參數指定為jsonp[1],或使用簡寫形式:getJSON()方法[2]。例如:

// 设置crossDomain和dataType参数以使用JSONP
$.ajax({
 dataType: "jsonp",
 url: "http://www.example.com/xxx",
 crossDomain: true,
 data: {
  
 }
}).done(function() {
 // 请求完成时的处理函数
});

// 使用getJSON
$.getJSON("http://www.example.com/xxx&#63;jsoncallback=&#63;", {
 // 参数
}, function() {
 // 请求完成时的处理函数
});

登入後複製

使用getJSON時,需要在參數中指定jsoncallback=?,這個就是前面所說的回呼函數,JQuery會自動以一個隨機產生的值(回呼函數名)來取代該參數中的問號部分,從而形成jsoncallback=jQueryxxxxxxx這種形式的參數,然後和其他參數一起使用GET方式發出請求。

使用第一種方式時,只要將dataType參數的值指定為jsonp,JQuery就會自動在請求位址後面加上jsoncallback參數,因此無需手動新增。

JQuery跨域請求的缺陷:錯誤處理
跨網域請求可能會失敗,例如對方伺服器的安全設定拒絕接受來自我方的請求(我方不在對方的信任清單中),或網路不通,或對方伺服器已關閉,或要求位址或參數不正確導致伺服器報錯等等。

在JQuery中,當使用ajax或getJSON發送請求後會回傳一個jqXHR物件[3]。該物件實作了Promise協議,所以我們可以使用它的done、fail、always等介面來處理回呼。例如我們可以用在它的fail回呼中進行請求失敗時的錯誤處理:

var xhr = $.getJSON(...);
xhr.fail(function(jqXHR, textStatus, ex) {
  alert('request failed, cause: ' + ex.message);
});
登入後複製

这种方式能够处理“正常的错误”,例如超时、请求被中止、JSON解析出错等等。但它对那些“非正常的错误”,例如网络不通、服务器已关闭等情况的支持并不好。

例如当对方服务器无法正常访问时,在Chrome下你会在控制台看到一条错误信息:

JQuery不会处理该错误,而是选择“静静地失败”:fail回调不会执行,你的代码也不会得到任何反馈,所以你没有处理这种错误的机会,也无法向用户报告错误。

一个例外是在IE8。在IE8中,当网络无法访问时

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

無法完成操作(錯誤0x0000771)印表機錯誤 無法完成操作(錯誤0x0000771)印表機錯誤 Mar 16, 2024 pm 03:50 PM

如果您在使用印表機時遇到錯誤訊息,例如操作無法完成(錯誤0x00000771),可能是因為印表機已中斷連線。在這種情況下,您可以透過以下方法解決問題。在本文中,我們將討論如何在Windows11/10PC上修復此問題。整個錯誤訊息說:操作無法完成(錯誤0x0000771)。指定的印表機已被刪除。修正WindowsPC上的0x00000771印表機錯誤若要修復印表機錯誤操作無法完成(錯誤0x0000771),指定的印表機已在Windows11/10PC上刪除,請遵循下列解決方案:重新啟動列印假脫機

Windows Update 更新提示Error 0x8024401c錯誤的解決方法 Windows Update 更新提示Error 0x8024401c錯誤的解決方法 Jun 08, 2024 pm 12:18 PM

目錄解決方法一解決方法二一、刪除Windows更新的臨時檔案二、修復受損的系統檔案三、檢視並修改登錄項目四、關閉網卡IPv6五、執行WindowsUpdateTroubleshootor工具進行修復六、關閉防火牆和其它相關的防毒軟體。七、關閉WidowsUpdate服務。解決方法三解決方法四華為電腦Windows更新出現「0x8024401c」報錯問題現象問題原因解決方案仍未解決?最近web伺服器因為系統漏洞需要更新,登入伺服器之後,更新提示錯誤碼0x8024401c解決方法一

解讀Oracle錯誤3114:原因及解決方法 解讀Oracle錯誤3114:原因及解決方法 Mar 08, 2024 pm 03:42 PM

標題:分析Oracle錯誤3114:原因及解決方法在使用Oracle資料庫時,常常會遇到各種錯誤代碼,其中錯誤3114是比較常見的一個。此錯誤一般涉及資料庫連結的問題,可能導致存取資料庫時出現異常狀況。本文將對Oracle錯誤3114進行解讀,探討其造成的原因,並給出解決該錯誤的具體方法以及相關的程式碼範例。 1.錯誤3114的定義Oracle錯誤3114通

香香腐宅app為什麼顯示錯誤 香香腐宅app為什麼顯示錯誤 Mar 19, 2024 am 08:04 AM

顯示錯誤是在香香腐宅app中可能會出現的問題,有些用戶還不太清楚香香腐宅app為什麼顯示錯誤,可能是網絡連接問題、後台程序過多、註冊信息錯誤等問題,接下來就是小編為使用者帶來的app顯示錯誤解決方法的介紹,有興趣的使用者快來一起看看吧!香香腐宅app為何顯示錯誤答案:網路連線問題、後台程式過多、註冊資訊錯誤等詳情介紹:1、【網路問題】解決方法:檢視裝置連線網路狀態,重新連線或選擇其他網路連線使用即可。 2.【後台程式過多】解決方法:關閉正在運作的其他程序,釋放系統,可以加快軟體的運作。 3、【註冊資訊錯

Linux Oops:詳解這錯誤的意義 Linux Oops:詳解這錯誤的意義 Mar 21, 2024 am 09:06 AM

LinuxOops:詳解這一錯誤的含義,需要具體程式碼範例什麼是LinuxOops?在Linux系統中,&quot;Oops&quot;指的是核心出現了一個嚴重的錯誤導致系統崩潰的情況。 Oops實際上是一種核心崩潰的機制,它會在發生致命錯誤時停止系統運行,並列印相關的錯誤訊息,以便開發者對問題進行診斷和修復。 Oops通常發生在核心空間中,與用戶空間的應用程式無關。當內核遇到

串流媒體伺服器拋出錯誤[修復] 串流媒體伺服器拋出錯誤[修復] Mar 25, 2024 am 09:40 AM

你得到的串流媒體伺服器在你的電腦上拋出了一個錯誤嗎?Stremio是一個跨平台的視訊串流服務,你可以使用它來串流媒體和觀看電影、電視節目、直播電視等。一些用戶報告說,在嘗試啟動應用程式時出現此錯誤。錯誤可能在多種情況下出現,包括網際網路和伺服器問題。使用Stremio的web版本時也可能遇到此錯誤。防毒軟體或防火牆的干擾也可能導致錯誤發生。無論何種情況,您都可以根據本指南來修復這個問題。當串流媒體伺服器拋出錯誤在Windows上執行Stremio應用程式時,可能會遇到「Stremio串流媒體伺服器拋出錯誤

jQuery小技巧:快速修改頁面所有a標籤的文本 jQuery小技巧:快速修改頁面所有a標籤的文本 Feb 28, 2024 pm 09:06 PM

標題:jQuery小技巧:快速修改頁面所有a標籤的文字在網頁開發中,我們經常需要對頁面中的元素進行修改和操作。使用jQuery時,有時候需要一次修改頁面中所有a標籤的文字內容,這樣可以節省時間和精力。以下將介紹如何使用jQuery快速修改頁面所有a標籤的文本,同時給出具體的程式碼範例。首先,我們需要引入jQuery庫文件,確保在頁面中引入了以下程式碼:&lt

腳本化診斷本機主機已停止運作[修復] 腳本化診斷本機主機已停止運作[修復] Mar 11, 2024 am 09:37 AM

在執行程式或進行故障排除時,如果出現指示腳本診斷本機已停止運作的錯誤訊息,這可能是由於多種原因引起的。在Windows11/10PC上修復這個問題可能需要不同的方法,因為每台電腦的情況可能不同。常見的原因是腳本程式本身有錯誤或損壞,導致其無法正常運作。解決這個問題的方法可能包括修復或重裝腳本程序,或嘗試使用其他版本的腳本程序。另一個可能的原因是系統檔案損壞或缺失,這可能會影響腳本的運作。在這種情況下,您可以嘗試執行系統文件檢查工具來修復任何受損的文件,或進行系統復原以恢復到之

See all articles