jquery ajax返回值和完成函数

时间:2012-10-13 01:23:16

标签: javascript jquery

我在jquery文档页面上找到了这个小例子。我总是尝试从ajax函数返回值,我总是被告知有一些同步和异步的问题,我不能从$ .ajax函数中返回值,而不会使它异步。

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

在上面的例子中,关于应用了什么功能(在示例中用作$(this))。

另外一件事,因为ajax函数不能设置全局变量,不能在此设置吗?我不能从完成功能中返回值吗?

1 个答案:

答案 0 :(得分:2)

  

应用了什么功能

$.ajax返回jqXHR object(请参阅配置参数说明后的第一部分),它实现promise interface并允许您添加回调并获得Ajax调用更改的通知。< / p>

  

在示例

中用作$(this)的是什么

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

  

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

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


  

由于ajax函数无法设置全局变量

这是不正确的,任何函数都可以设置全局变量。异步函数的问题在于,您可能设置之前访问

  

无法在此设置

见上文

  

我无法从完成功能中返回值

您可以返回一个值(就像在回调中放置return语句一样),但是您无法将其返回到您的代码,因为jQuery正在内部调用回调 并且只是忽略了返回值。