3 回答

TA貢獻1788條經驗 獲得超4個贊
如果查看jQuery.ajax()文檔,則可以找到:
錯誤
如果請求失敗,將調用的函數(...)注意:對于跨域腳本和跨域JSONP請求,不會調用此處理程序。這是一個Ajax事件。
因此,您不得不尋找解決方法。您可以指定超時以觸發錯誤回調。這意味著應在指定的時間范圍內成功完成請求。否則,假設它已失?。?/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),因為那樣行不通 -它創建了一個元素來獲取數據,必須通過GET請求完成。JSONP解決方案不使用XmlHttpRequest對象,因此按照標準的理解方式,它不是AJAX請求,但是內容仍然可以動態訪問-對最終用戶而言沒有區別。
$.ajax({
url: url,
type: "GET"
dataType: "jsonp",
...
其次,您提供的數據不正確。您正在將javascript對象(使用對象文字創建的)推送到網絡上,而不是其序列化的JSON表示形式。創建JSON字符串(不手動,例如使用JSON.stringify轉換器):
$.ajax({
...
data: JSON.stringify({u: userid, p: pass}),
...
上一期,您已將設置async為false,而文檔則顯示:
跨域請求和dataType:“ jsonp”請求不支持同步操作。
- 3 回答
- 0 關注
- 469 瀏覽
添加回答
舉報