我在jquery文档页面上找到了这个小例子。我总是尝试从ajax函数返回值,我总是被告知有一些同步和异步的问题,我不能从$ .ajax函数中返回值,而不会使它异步。
$.ajax({
url: "test.html",
context: document.body
}).done(function() {
$(this).addClass("done");
});
在上面的例子中,关于应用了什么功能(在示例中用作$(this))。
另外一件事,因为ajax函数不能设置全局变量,不能在此设置吗?我不能从完成功能中返回值吗?答案 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正在内部调用回调 并且只是忽略了返回值。