javascript - 将结果 ajax 存储到变量中不起作用

标签 javascript html ajax

我正在尝试将 ajax 结果存储到变量中。当我使用 console.log 时,它给出了我想要的 html 标签,但是当我尝试设置为全局变量时,它说未定义。

如何将ajax结果存储到全局变量

var result;
$.ajax({
  url: "person.html",
    success: function(data){
    //result=data;
    console.log(data);
  }
});
//console.log(result);

最佳答案

Ajax 是异步的,这意味着找出结果的代码与结果的控制台日志同时运行,这就是为什么你得到未定义的原因,因为结果在执行时尚未设置值正在控制台记录。

我知道控制台记录结果的唯一方法是在 ajax success 函数中执行此操作,或者让 ajax success 函数调用包含控制台日志的后续函数。这是在控制台记录值之前确保已返回值的唯一方法。

示例:

示例 1:

var result;

$.ajax({
  url: "person.html",
    success: function(data){
        result=data;
        console.log(result);
        //Note that in this instance using the variable 'result' is redundant, as you could simply console.log data like you're already doing.
    }
});

示例 2:

var result;

$.ajax({
  url: "person.html",
    success: function(data){
        result=data;
        subsequentFunction(result);
    }
});

function subsequentFunction(result){
    console.log(result)
}
// Note that if you're doing something simple with result that this could be a bit long winded and unnecessary.

这完全取决于您想要对结果做多少事情,以决定哪个选项更好。

注意:ajax 调用还有一个名为“async”的属性,您可以将其设置为 false,强制其同步,但这通常被认为是一个坏主意,因为它会阻止任何其他代码运行,直到返回结果并锁定浏览器。

关于javascript - 将结果 ajax 存储到变量中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42364736/

相关文章:

javascript - typescript 引用错误

javascript - 尝试在网页上显示响应

javascript - 在单个页面中处理多个电子邮件 HTML

javascript - Ajax - 返回的 json 对象在 ie 中为空

javascript - 如何将 Rx.Observable.fromEvent 添加到 ajax 内容

javascript - 动态添加 !important 到所有 CSS 属性

javascript - Firefox 中异常的 EventSource 错误

javascript - 使用javascript增加div高度以显示所有内容

css - 我的 div 标签不适合

foreach php 中的 Javascript - Magento