我的功能很简单,基于我发现的here。然而我似乎无法使其发挥作用,这是错误的吗?
function ajax(url) {
var result;
$.ajax({
url: url,
success: function(data) {
result = data;
//$('#test').html(data);
}
});
return result;
}
该函数正在获取数据,因为如果我取消注释注释代码并调用它,那么数据将显示在#test元素中。但是,如果我写
var test = ajax('my-url.php');
$('#test').html(test);
然后它不起作用。我的猜测是由于某种原因,数据"数据"没有存储在变量"结果"中。但我无法弄清楚为什么,也不知道如何解决它。任何帮助表示赞赏。
答案 0 :(得分:2)
在AJAX调用完成之前,result
变量没有被更改,此时ajax
函数已经返回。这是整个回调点,即在事件结束时安排执行任务的能力。
Javascript(浏览器内)本质上是异步的。
或者,您可以将async: false
传递到$.ajax
来电,它会等到它完成,但恢复原来的风格会更有意义。
编辑:看起来您正在做的事情可以通过$.load()
完成。
答案 1 :(得分:1)
如果您将$.ajax
调用修改为不以异步方式执行,它将按预期工作:
function ajax(url) {
var result;
$.ajax({
async: false,
url: url,
success: function(data) {
result = data;
//$('#test').html(data);
}
});
return result;
}
$.ajax
函数立即返回,不等待AJAX调用返回。