为什么我不能从jQueryAjax中得到结果

为什么我不能从jQueryAjax中得到结果,ajax,jquery,Ajax,Jquery,我的函数非常简单,基于我的发现。然而,我似乎无法使它工作,有什么问题吗 function ajax(url) { var result; $.ajax({ url: url, success: function(data) { result = data; //$('#test').html(data); } }); return result;

我的函数非常简单,基于我的发现。然而,我似乎无法使它工作,有什么问题吗

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);

那就不行了。我的猜测是,出于某种原因,“data”中的数据没有存储在变量“result”中。但我不知道为什么,也不知道如何解决它。非常感谢您的帮助。

如果您将
$.ajax
调用修改为不异步执行,它将按照您的预期工作:

function ajax(url) {
  var result;
  $.ajax({
    async: false,
    url: url,
    success: function(data) {
        result = data;
        //$('#test').html(data);
        }
    });
  return result;
}

$.ajax
函数立即返回,不会等待ajax调用返回。

如果将
$.ajax
调用修改为不异步执行,它将按预期工作:

function ajax(url) {
  var result;
  $.ajax({
    async: false,
    url: url,
    success: function(data) {
        result = data;
        //$('#test').html(data);
        }
    });
  return result;
}

$.ajax
函数立即返回,不等待ajax调用返回。

直到ajax调用完成,
ajax
函数已经返回,才会更改
结果
变量。这就是回调的整个点,即在事件完成时安排要执行的任务的能力

Javascript(在浏览器中)本质上是异步的

或者,您可以将
async:false
传递给您的
$.ajax
调用,它将等待调用完成,但恢复到原始样式更有意义


编辑:看起来您正在做的事情可以用完成。

在AJAX调用完成之前,
结果
变量不会被更改,此时,
AJAX
函数已经返回。这就是回调的整个点,即在事件完成时安排要执行的任务的能力

Javascript(在浏览器中)本质上是异步的

或者,您可以将
async:false
传递给您的
$.ajax
调用,它将等待调用完成,但恢复到原始样式更有意义


编辑:看起来你正在做的事情可以用它来完成。

谢谢,我选择了另一个答案,因为经过一些阅读,我决定使用$.load()谢谢,我选择了另一个答案,因为经过一些阅读,我决定使用$.load()