3 回答

TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果查看jQuery.ajax()文檔,則可以找到:
錯(cuò)誤
如果請求失敗,將調(diào)用的函數(shù)(...)注意:對于跨域腳本和跨域JSONP請求,不會調(diào)用此處理程序。這是一個(gè)Ajax事件。
因此,您不得不尋找解決方法。您可以指定超時(shí)以觸發(fā)錯(cuò)誤回調(diào)。這意味著應(yīng)在指定的時(shí)間范圍內(nèi)成功完成請求。否則,假設(shè)它已失?。?/p>
$.ajax({
...
timeout: 5000, // a lot of time for the request to be successfully completed
...
error: function(x, t, m) {
if(t==="timeout") {
// something went wrong (handle it)
}
}
});
您代碼中的其他問題...
盡管JSONP(可在此處和此處查看)可用來克服原始策略的限制,但您不能使用JSONP POST(請參閱CORS),因?yàn)槟菢有胁煌?-它創(chuàng)建了一個(gè)元素來獲取數(shù)據(jù),必須通過GET請求完成。JSONP解決方案不使用XmlHttpRequest對象,因此按照標(biāo)準(zhǔn)的理解方式,它不是AJAX請求,但是內(nèi)容仍然可以動態(tài)訪問-對最終用戶而言沒有區(qū)別。
$.ajax({
url: url,
type: "GET"
dataType: "jsonp",
...
其次,您提供的數(shù)據(jù)不正確。您正在將javascript對象(使用對象文字創(chuàng)建的)推送到網(wǎng)絡(luò)上,而不是其序列化的JSON表示形式。創(chuàng)建JSON字符串(不手動,例如使用JSON.stringify轉(zhuǎn)換器):
$.ajax({
...
data: JSON.stringify({u: userid, p: pass}),
...
上一期,您已將設(shè)置async為false,而文檔則顯示:
跨域請求和dataType:“ jsonp”請求不支持同步操作。
- 3 回答
- 0 關(guān)注
- 468 瀏覽
添加回答
舉報(bào)