我在Javascript-Jquery中有以下代码片段:
var result = "";
$.ajax({
type: 'POST',
url: 'update.php',
data: { 'val': $val }
})
.done(function(data) {
alert(data); // shows right response
result = data;
alert(result); // shows right response
});
alert(result); // shows nothing
即使我在回调中初始化结果,当我提醒结果变量(它仍然是“”)时,我什么也得不到?为什么是这样?
答案 0 :(得分:3)
这是因为ajax调用是异步运行的。仅仅因为第二个警报是在ajax调用之后,你仍然要么:写一个回调方法在调用完成时触发,或者b:同步完成ajax调用。有关async属性及其说明,请参阅jquery ajax文档。
答案 1 :(得分:1)
很简单。 alert(result)
代码在done
回调之前执行。因此,result
变量为空。警报调用后异步调用done
回调。
希望它有所帮助。
答案 2 :(得分:1)
这是因为现在你使用的ajax模式是异步...我有一个例子,你如下:
var result = "";
$.ajax({
type: 'POST',
url: 'update.php',
data: { 'val': $val' }
}).done(function(data) {
alert(1, data); // shows right response
result = data;
alert(2, result); //shows right response
});
alert(3, result) // shows nothing
如果你想使用Synchronous ...请查看doc的异步变量 我希望它对你有用:)