【问题标题】:Ajax Response 200 ok, but shows failed to load response dataAjax 响应 200 正常,但显示无法加载响应数据
【发布时间】:2015-12-25 14:16:22
【问题描述】:

我正在对后端 rest api 进行 ajax 调用,api 返回正常。如果我 console.log() 成功数据和错误数据,它会在控制台上给出“资源登录”,200 ok,但是当我在该 auth/login 路由的网络选项卡响应中查看它时,它显示“加载失败响应数据”。这种情况有时只发生,并不总是发生。为什么? 这是我的 ajax 调用的 sn-p。

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;
  }
)

【问题讨论】:

标签: javascript jquery ajax


【解决方案1】:

我正在使用 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);};

编辑:

在我的 PHP 文件中,我使用了这个头文件:

header("Cache-Control: no-cache, must-revalidate"); //
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); //Date in the past

【讨论】:

    【解决方案2】:

    当我在我的 php ajax 页面中将显示错误更改为 false 时已修复,这看起来也是。
    ini_set('display_errors', 1);ini_set('display_errors', 0);

    【讨论】:

      【解决方案3】:

      “空缓存和硬重新加载”对我有用。

      【讨论】:

        【解决方案4】:

        【讨论】:

        • 谢谢,2019 年仍然是一个问题,但似乎是零星的。
        • 这不是重复的,因为链接与文本/html 内容相关。这个问题是关于 json 响应的。
        【解决方案5】:

        由于回发,这发生在我的项目中。 当我解决回发问题时,错误消失了。

        【讨论】:

          【解决方案6】:

          我确认这一点。由于 Chrome 版本 45,我看到我的一些 Ajax 请求得到 200 作为状态代码,但在显示内容“加载内容失败”时出现问题。

          我的 Ajax 请求在 for 循环中,再次请求失败的内容会使内容正常加载。

          似乎解决了for循环内部在请求和另一个之间使用setTimeout的问题。

          【讨论】:

            【解决方案7】:

            显然,清除 cookie 存在一些问题。清除它们后,系统运行良好。 不确定需要帮助!

            【讨论】:

              猜你喜欢
              • 2017-08-08
              • 2014-04-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-03-13
              • 1970-01-01
              • 1970-01-01
              • 2011-02-23
              相关资源
              最近更新 更多