为什么我无法从jQuery AJAX中获得结果

时间:2012-07-19 00:48:06

标签: ajax jquery

我的功能很简单,基于我发现的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);
然后它不起作用。我的猜测是由于某种原因,数据"数据"没有存储在变量"结果"中。但我无法弄清楚为什么,也不知道如何解决它。任何帮助表示赞赏。

2 个答案:

答案 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​​调用返回。