在jquery中获取最后一个ajax调用

时间:2013-06-06 08:24:57

标签: ajax jquery jasmine

我想在我的代码中进行最后一次ajax调用。

这是我的代码

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="Scripts/jquery-1.7.1.min.js"></script>


<script>
    function getCreateAccount() {
        $.ajax({
             type: "GET",
             url: "/Account/Register/",
             contentType: "application/json; charset=utf-8",
             dataType: "json"
         });
        console.log($.ajax.mostRecentCall.args[0]);
    }

</script>

</head>
<body>

</body>
</html>

但是当我在我的控制台中看到它说“TypeError:$ .ajax.mostRecentCall is undefined”。

谢谢,

5 个答案:

答案 0 :(得分:7)

您可以注册一个全局ajaxComplete处理程序,每次AJAX调用完成时都会调用该处理程序。

通过这种方式,您可以模拟Jasmine $.ajax.calls.mostRecentCall()属性:

$(document).ajaxComplete(function(ev, jqXHR, settings) {
    $.ajax.mostRecentCall = jqXHR;
});

在这种情况下,我正在保存jqXHR对象,而不是传递给$.ajax的确切参数集。

当然,请注意,调用$.ajax后不会立即填充 - 在至少一个调用完成后才会填充。

答案 1 :(得分:3)

我认为 mostRecentCall 功能来自Jasmine框架。您必须在代码中包含Jasmine。

jquery中不存在

mostRecentCall

答案 2 :(得分:0)

在ajax jquery中没有像“$ .ajax.mostRecentCall”这样的内容。

正如PSR所提到的,你可以尝试使用标志变量

答案 3 :(得分:0)

在记录之前添加警报将为ajax调用提供足够的时间来完成。(应该这样做)

如果您不想要任何警报,那么您可以使用sleep()方法

答案 4 :(得分:0)

没有像

那样的东西
$.ajax.mostRecentCall

在Jquery中。那是来自Jasmine.js。除非你直接添加对Jasmine.js的引用并遵循窥探函数的步骤,否则会给你一个错误。

您可能想要参考Jasmin.js的documentation。这是展示如何使用它的link