4

我想在我的代码中进行最后一次 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”。

谢谢,

4

5 回答 5

8

您可以注册一个ajaxComplete将在每次 AJAX 调用完成时调用的全局处理程序。

有了这个,你可以模拟像 Jasmine$.ajax.calls.mostRecentCall()属性这样的东西:

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

在这种情况下,我保存的是jqXHR对象,而不是传递给$.ajax.

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

于 2013-06-06T08:40:36.467 回答
3

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

mostRecentCall在 jquery 中不存在!

于 2013-06-06T08:41:21.043 回答
0

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

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

于 2013-06-06T08:37:14.727 回答
0

在记录之前添加警报将为完成 ajax 调用提供足够的时间。(这应该可以解决问题)

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

于 2013-06-06T08:41:32.437 回答
0

没有什么像

$.ajax.mostRecentCall

在jQuery中。那是来自 Jasmine.js。除非并且直到您添加对 Jasmine.js 的引用并按照步骤监视函数,否则它将给您一个错误。

您可能需要参考 Jasmin.js 的文档。这是显示如何使用它的链接。

于 2013-06-06T08:47:20.647 回答