Javascript 将结果ajax存储到变量not working中
我试图将ajax结果存储到变量中。当我使用console.log时,它给出了我想要的html标记,但当我尝试设置为全局变量时,它表示未定义 如何将ajax结果存储到全局变量中Javascript 将结果ajax存储到变量not working中,javascript,html,ajax,Javascript,Html,Ajax,我试图将ajax结果存储到变量中。当我使用console.log时,它给出了我想要的html标记,但当我尝试设置为全局变量时,它表示未定义 如何将ajax结果存储到全局变量中 var结果; $.ajax({ 网址:“person.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
的可能重复之前运行