在JavaScript / jQuery中定义一个全局变量,稍后在脚本中获取它。
但奇怪的是它没有用。
在控制台中打印getResult
给我undefined
。
但在尝试在指定值之后打印getResult
时,它会给我准确的值。
其实我在底部需要ajax结果..我怎么能这样做..?
var getResult;
$.getJSON(url, function(data) {
//JS statement to Ajax
//JS statement to Ajax
$.ajax({
type: "post",
dataType: "json",
url: urlTo,
data: dataSend,
success: function (result, status) {
getResult = result;
console.log(getResult); // getResult is working here
}
});
//JS statement to Ajax
//JS statement to Ajax
$.ajax({
type: "post",
dataType: "json",
url: urlTo2,
data: dataSend2,
success: function (result2, status) {
}
});
console.log(getResult); // getResult is not working here. Giving " undefined" result here.
});
答案 0 :(得分:4)
JavaScript 是同步。 AJAX 是异步。
因此,底部的console.log(getResult);
在执行以下AJAX之前触发:
success: function (result, status) {
getResult = result;
console.log(getResult); // getResult is working here
}
您可以为getResult
提供默认值并自行测试。
答案 1 :(得分:4)
这是因为在AJAX调用完成之前没有定义getResult
,它只是声明。
由于AJAX是异步的,因此您的第一个控制台日志就是:
var getResult;
console.log(getResult);
你能在这里给我getResult
的价值吗?不,因为它未定义(实际上它的值是undefined
, shhh )
答案 2 :(得分:1)
在第二次AJAX调用中,您未指定导致getResult = result2;
值的"undefined"
。
另外,将全局var = getResult;
放在getJSON
函数中。