javascript - 检查函数是否为 jQuery ajax 请求

标签 javascript jquery ajax

我正在编写一个 ajax 队列,我想确保函数类型(来自对象)实际上是一个 ajax 请求,以便可以在其上调用 .done/.fail/.always。我该怎么做?

最佳答案

I want to ensure that the type of function (comes in an object) is in fact an ajax request so that .done/.fail/.always can be called on it.

jQuery ajax 请求对象 (jqXHR) 不是函数。在 jQuery v1.12.0(我方便检查的版本)中,它们是添加了属性的普通对象(例如,没有特殊的构造函数),因此您不能使用 instanceof 来查看它们是否“重新 jqXHR 对象。

您可以测试您获得的对象上是否存在donefail 和/或always:

if (obj.done && obj.fail && obj.always) {
    // It's probably a jqXHR
}

或者如果你想更彻底,你可以确保它们是函数:

if (typeof obj.done == "function" &&
    typeof obj.fail == "function" &&
    typeof obj.always == "function") {
    // It's probably a jqXHR
}

这是“鸭子打字”的一个例子:它叫起来像鸭子,所以我们假设它是鸭子。

如果你真的想尽可能地限制它到 jqXHR 对象而不是其他具有这些功能的东西,你可以检查它们具有的其他功能/属性,例如 getAllResponseHeaders 等。

关于javascript - 检查函数是否为 jQuery ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35134768/

相关文章:

javascript - MySQL 使用 Ajax 返回表名而不是值

javascript - 在javascript中将字符串转换为数字

javascript - 将EventListener添加到当前目标

javascript - 触摸冲床不起作用

ajax - Spring - 在 Ajax 请求失败后成功登录后重定向到链接

javascript - 如何从使用ajax更新的json文件中提取值并将其用作php变量

javascript - 为什么我的点击按钮不起作用。 JavaScript/jQuery

javascript - 重复的 ID 值会搞乱 jQuery 选择器吗?

javascript - FileReader.readAsDataURL 上传到 express.js

javascript - jQuery : on horizontal scroll tell which element is in viewport