我试图将ajax .done()查询的结果传递给.done函数之外的对象或变量。不幸的是,似乎不可能在函数之外读取变量,因为每次我尝试将它传递给全局变量时,它都会得到值" undefined"。当我在.done函数内警告变量时,将读取该值。 您可以在下面找到我的代码:
var result;
//doing the ajax call to a .php file
var dO = $.ajax({
url: "/php-sites/fetch_ressources.php",
type: 'post',
dataType: 'json',
data: {
operation: "fetch_name"
}
});
//fetching the result with done
$.when(dO).done(function(data) {
//alert works here
result = data;
alert(result);
});
//alert doesn't work here
alert(result);
我想知道唯一的解决方案是将值传递给DOM-Object并使用其他函数读取它。 我期待你的回答!谢谢!
答案 0 :(得分:0)
我认为您正在寻找async
选项
1) async:false = Execution Hold.
2) async:true = Execution continued.
异步意味着脚本将向服务器发送请求,并在不等待响应的情况下继续执行。
var result;
var dO = $.ajax({
url: "https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js",
async:false,
});
//fetching the result with done
$.when(dO).done(function(data) {
console.log("one");
result = data;
console.log(result);
});
console.log('two');
var result;
var dO = $.ajax({
url:'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js' ,
async: false,
});
//fetching the result with done
$.when(dO).done(function(data) {
console.log("one");
result = data;
console.log(result.substr(0,23));
});
console.log("two");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:0)
我试图将ajax .done()查询的结果传递给.done函数之外的对象或变量。不幸的是,似乎不可能在函数之外读取变量,因为每次我尝试将它传递给全局变量时,它都会得到值&#34; undefined&#34;
作为Javascript的异步特性,结果变量外部警报显示未定义,因为它没有获得.done函数结果值。 通过asynchrounus,这意味着没有确定性首先执行(没有顺序)。外部警报结果首先在函数和完成函数之前执行,此时逻辑上未定义
当我在.done函数内警告变量时,会读取该值。
当你使用这样的功能时,&#34;当&#34;函数先执行 执行.done函数,其中包含结果值。因此,在将结果值分配给数据并发出警报后发出警报时,它会显示该值,因为它是在该时刻由该值定义的。
我想知道唯一的解决方案是将值传递给DOM-Object并使用其他函数读取它。我期待你的回答
我的建议是返回.done函数中的结果值,并将其分配给变量。 这样结果就会得到外面的值,并在之后提醒外面的值。