簡體   English   中英

jQuery Ajax響應未調用成功方法

[英]Jquery ajax response not calling Success method

我對ajax非常陌生,並且正在處理jquery ajax請求。 Ajax回調未調用成功方法。 交互是跨站點域之間的。 我的AJAX請求看起來像

   $.ajax({
       timeout: 20000,
       url: 'test.com',
       crossDomain: true,
       dataType: 'jsonp',
       success: function (data) {
           console.log('callback success');
           this._cache = data;
           localStorage.token = data.access_token;
     } });

此通話沒有錯誤。

這個ajax請求沒有調用成功函數,請求正在返回json數據。 只是成功方法沒有被調用。

此ajax請求未調用成功函數。

獲取請求已成功觸發。 我什至可以用200 http響應在提琴手中跟蹤響應。由於某種原因,未調用成功方法。

它正在返回json對象,我在提琴手中已經找到了

您要讓jQuery期待JSONP響應,因此它試圖像執行JavaScript腳本一樣執行JSON文檔(因為這就是JSONP)。 失敗,因為它不是JSONP。

返回JSONP而不是JSON,或者(假設服務器返回正確的Content-Type )remove dataType: 'jsonp',

好的...我來到這里遇到了同樣的問題...當我從上面的注釋中讀取到指定datatype:jsonp永遠不會將成功作為每個@mondjunge的回調調用時,它開始讓我開始思考我之前在代碼中看到的某些行為也許出於某種原因, datatype:json可能也具有相同的行為。

因此,閱讀完此頁面后,我從ajax請求中取出了數據類型聲明,並且servlet返回了正確的數據有效負載,返回了200,並且jquery最終調用了成功函數並修改了我的DOM。

所有這些步驟都發生了,除了最后一個步驟,直到我從ajax調用中刪除了數據類型。 不是我所期望的!

希望其他人可以弄清楚為什么會發生這種情況……目前至少有一些對這個問題無所適從的人,發現這篇文章可以同時做到這一點。

  1. 檢查您的ajax是否已執行
  2. 檢查它的狀態。 如果響應代碼為!= 200,則還應添加錯誤方法,以進行錯誤處理。

嘗試這個:

$.ajax({
   timeout: 20000,
   url: 'test.com',
   method: 'GET',
   crossDomain: true,
   dataType: 'jsonp',
   success: function (data) {
       console.log('callback success');
       this._cache = data;
       localStorage.token = data.access_token;
    }, 
    error: function(xhr, error){
       console.debug(xhr); console.debug(error);
    },
 });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM