jQuery从不为ajax调用调用.done()或.always()

jQuery never calls .done() or .always() for ajax call

本文关键字:调用 always done ajax jQuery      更新时间:2023-09-26

我有一个简单的获取请求:

   $.get('ri/i18n/locale')
      .done(function() {
        console.log(this);
      })
      .fail(function() {
        console.log(this);
      })
      .always(function(){
        console.log(this);
      });

不幸的是,从来没有调用过任何处理程序。

我无法确认在浏览器中调用ri/i18n/locale会返回一个有效的JSON字符串。我使用的是jQuery 1.11.1.

有什么想法吗?

您的问题可能是使用的jQuery版本。在jQuery1.5之前,jqXHR对象不会返回$.get(),这就是允许您使用promise行为的原因。相关的jQuery文档。

毕竟我错过了ajax调用的异步特性。我在所有console.log语句和ajax调用后的语句上都有一个断点。由于ajax调用后的语句首先被调用,所以我认为console.log语句都不会被调用。

由于我需要ajax调用的结果才能继续,所以我必须将所有代码移到done()函数中。