Javascript 将结果ajax存储到变量not working中

Javascript 将结果ajax存储到变量not working中,javascript,html,ajax,Javascript,Html,Ajax,我试图将ajax结果存储到变量中。当我使用console.log时,它给出了我想要的html标记,但当我尝试设置为全局变量时,它表示未定义 如何将ajax结果存储到全局变量中 var结果; $.ajax({ 网址:“person.html”, 成功:功能(数据){ //结果=数据; 控制台日志(数据); } }); //控制台日志(结果)Ajax是异步的,这意味着查找结果的代码与控制台结果日志同时运行,这就是为什么您没有定义结果,因为在控制台记录值时还没有设置结果 据我所知,控制台记录结果的唯

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

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

var结果;
$.ajax({
网址:“person.html”,
成功:功能(数据){
//结果=数据;
控制台日志(数据);
}
});

//控制台日志(结果)Ajax是异步的,这意味着查找结果的代码与控制台结果日志同时运行,这就是为什么您没有定义结果,因为在控制台记录值时还没有设置结果

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

示例:

例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,这将强制它同步,但这通常被认为是一个坏主意,因为它将阻止任何其他代码运行,直到返回结果并锁定浏览器为止。

ajax是异步的,这意味着查找结果的代码与结果的控制台日志同时运行,这就是为什么您没有定义结果,因为在控制台记录值时,结果尚未设置

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

示例:

例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,强制其同步,但这通常被认为是一个坏主意,因为它会阻止任何其他代码运行,直到返回结果并锁定浏览器。

$。ajax返回一个承诺,这意味着您的代码知道它将收到响应,但因为它依赖于外部源,所以它不知道何时会收到响应


有关此主题的更多信息,请参见上面的链接。

$。ajax返回一个承诺,这意味着您的代码知道它将收到一个响应,但由于它依赖于外部源,因此不知道该响应何时到来


有关此主题的更多信息,请参见上面的链接。

ajax请求是异步的,因此您的
控制台.log(result)
在获得请求响应之前正在运行。你应该这样做

var结果

$.ajax({
  url: "person.html",
    success: callback(data)
});

function callback (data){
    result=data;
    console.log(result);
}

ajax请求是异步的,所以您的
console.log(result)
在得到请求响应之前正在运行。你应该这样做

var结果

$.ajax({
  url: "person.html",
    success: callback(data)
});

function callback (data){
    result=data;
    console.log(result);
}

您将看不到任何内容,因为数据尚未填充。在您的特定情况下,您实际上需要等待响应。您可以使用以下代码段来实现它

$(document).ready(function(){
    var data = $.parseJSON($.ajax({
        url:  'person.html',
        dataType: "json", 
        async: false
    }).responseText); 
    var myProp = data.property; // Here you can access your data items
});
另一种方法应该类似于您可以将数据推送到一个数组中,并可以通过以下其他功能访问数据:

var result =[];

$(document).ready(function()
{
  $.ajax({
    url: 'person.html',
    async:true,
    dataType: "json", 
    success: function(data)
     { 
        result.push(data);
     }
  });
});
NewFunction()
{
   console.log(result); 
}

您将看不到任何内容,因为数据尚未填充。在您的特定情况下,您实际上需要等待响应。您可以使用以下代码段来实现它

$(document).ready(function(){
    var data = $.parseJSON($.ajax({
        url:  'person.html',
        dataType: "json", 
        async: false
    }).responseText); 
    var myProp = data.property; // Here you can access your data items
});
另一种方法应该类似于您可以将数据推送到一个数组中,并可以通过以下其他功能访问数据:

var result =[];

$(document).ready(function()
{
  $.ajax({
    url: 'person.html',
    async:true,
    dataType: "json", 
    success: function(data)
     { 
        result.push(data);
     }
  });
});
NewFunction()
{
   console.log(result); 
}

这是因为
console.log(result)
将在
result=data
的可能重复之前运行,这是因为
console.log(result)
将在
result=data
的可能重复之前运行