对不成功的jquery ajax请求执行一些操作

do something at unsuccessful jquery ajax request

本文关键字:执行 操作 请求 ajax 不成功 jquery      更新时间:2023-09-26

我的ajax请求遇到了速率限制的api。

$.ajax({
    url:"https://api.themoviedb.org/xxx",
    crossDomain: true,
    dataType: "jsonp",
    dataObj : index,
    success: function (response, textStatus, xhr) {
        console.log('success');
    }
    ,error: function(XMLHttpRequest, textStatus, errorThrown) {
        console.log('error');
    }
});

我想知道我什么时候达到速率限制。

但是对于在控制台中显示此内容的请求:

加载资源失败:服务器响应状态为429 (OK)

我没有看到"成功"或"错误"。就好像成功和错误都没有被执行。

是否有一种方法来弹出和警告?

我试过complete,但它也不起作用。

谢谢

我找不到dataObj的文档,但删除它似乎使查询正常运行。

如果你去掉它,error回调被执行,你将能够在控制台中看到error

$.ajax({
    url:"https://api.themoviedb.org/xxx",
    crossDomain: true,
    dataType: "jsonp",
    success: function (response, textStatus, xhr) {
        console.log('success');
    }
    ,error: function(XMLHttpRequest, textStatus, errorThrown) {
        console.log('error');
    }
});

编辑:实际上你想改变的是数据类型。除非你显式地传递一个回调,否则你应该告诉jQuery你得到的是json而不是jsonp

$.ajax({
    url:"https://api.themoviedb.org/xxx",
    crossDomain: true,
    dataType: "json",
    dataObj: index,
    success: function (response, textStatus, xhr) {
        console.log('success');
    }
    ,error: function(XMLHttpRequest, textStatus, errorThrown) {
        console.log('error');
    }
});

尝试在设置中使用jQuery statusCode对象,如下所示:

$.ajax({
    url:"https://api.themoviedb.org/xxx",
    crossDomain: true,
    dataType: "jsonp",
    dataObj : index,
    success: function (response, textStatus, xhr) {
        console.log('success');
    },
    error: function(XMLHttpRequest, textStatus, errorThrown) {
        console.log('error');
    },
    statusCode: {
      429: function() {
        alert( "Exceeded request limit." );
      }
    }
});