2

我在 jquery 文档页面上找到了这个小例子。我总是尝试从 ajax 函数返回值,并且总是被告知存在一些同步和异步问题,如果不使其异步,我无法从 $.ajax 函数返回值。

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() { 
  $(this).addClass("done");
});

在上面的示例中,应用了这个 done 函数(示例中用作 $(this) 的内容)。

还有一件事,由于 ajax 函数不能设置全局变量,不能在这个中设置吗?我也不能从完成的函数中返回值吗?

4

1 回答 1

2

应用了这个 done 函数

$.ajax返回一个jqXHR 对象(参见配置参数描述后的第一部分),它实现了 Promise接口并允许您添加回调并获得 Ajax 调用更改的通知。

示例中用作 $(this) 的内容

在回调内部,如果未设置$.ajax,则指配置中this引用的对象context或 jqXHR 实例。context在这种情况下,它指的是document.body

context:这个对象将成为所有 Ajax 相关回调的上下文。默认情况下,上下文是一个对象,表示调用中使用的 ajax 设置($.ajaxSettings与传递给的设置合并$.ajax)。

文档中解释了这一点以及更多内容:http: //api.jquery.com/jQuery.ajax/


因为ajax函数不能设置全局变量

那是不正确的,任何函数都可以设置全局变量。异步函数的问题是您很可能在设置变量之前就对其进行了访问

也不能在此设置

往上看

我也不能从完成的函数中返回值

您可以返回一个值(如在return回调中放置一条语句),但您不能将其返回到您的代码中,因为 jQuery 在内部调用回调并忽略返回值。

于 2012-10-13T01:30:41.070 回答