簡體   English   中英

Ajax 響應 200 正常,但顯示無法加載響應數據

[英]Ajax Response 200 ok, but shows failed to load response data

我正在對后端 rest api 進行 ajax 調用,api 返回正常。 如果我 console.log() 成功數據和錯誤數據,它會在控制台上提供“資源登錄”,200 ok,但是當我在該身份驗證/登錄路由的網絡選項卡響應中查看它時,它顯示“加載失敗響應數據”。 這種情況有時會發生,但並非總是如此。 為什么? 這是我的 ajax 調用的片段。

ajax
    .post('auth/login', {
          data: {
              oauth_provider: 'google',
              oauth_token: (isToken ? authResult : authResult.access_token)
              },
          cache: false
          })
          .done(function(data) {
             console.log(data); // Resource Logged in
           })
           .error(function(err){
            console.log(err);
           })

這是我的 ajax.js 的內容

define(
  [
    'jquery',
    'util',
  ],
  function ($, util) {
    var ajax = {
      request: function (type, url, options) {
        if (url.indexOf('http') === -1) {
          url = util.url(url);
        }

        if (options === undefined) {
          options = {};
        }

        options.type = type
        options.url = url;

        return $.ajax(options);
      },

      get: function (url, options) {
        return ajax.request('GET', url, options);
      },

      post: function (url, options) {
        return ajax.request('POST', url, options);
      },

      put: function (url, options) {
        return ajax.request('PUT', url, options);
      },

      delete: function (url, options) {
        return ajax.request('DELETE', url, options);
      }
    };

    return ajax;
  }
)

在此處輸入圖片說明 在此處輸入圖片說明

顯然,事實證明清除 cookie 存在一些問題。 清除它們后,系統運行良好。 不確定需要幫助!

我確認這一點。 由於 Chrome 版本 45,我看到我的一些 Ajax 請求將 200 作為狀態代碼,但在顯示“無法加載內容”內容時出現問題。

我的 Ajax 請求在 for 循環內,再次請求失敗的內容使內容加載正常。

似乎解決了 for 循環內部在請求和另一個之間使用setTimeout問題。

“空緩存和硬重新加載”對我有用。

當我在我的 php ajax 頁面中將顯示錯誤更改為 false 時,它​​已修復,這看起來也是如此。
ini_set('display_errors', 1); ini_set('display_errors', 0);

我正在使用 Javascript,如果我采用這種方法,它將需要更長的時間並且不會從網絡選項卡中獲取任何數據:

         xhr.onreadystatechange=function(){
          if(xhr.readyState==4){...}}

由於您正在努力獲取 onreadystatechange 和 readyState,這需要時間並且瀏覽器會在您獲取信息之前將其刪除。 因此,通過使用它,您將獲得文本響應:

         xhr.addEventListener("load", (function(){ console.log(this.responseText);}));

或者

         xhr.onload = function(){ console.log(this.responseText);};

由於回發,這發生在我的項目中。 當我解決回發問題時,錯誤消失了。

暫無
暫無

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

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