Jquery:变量未在回调中初始化?

时间:2013-11-27 03:01:08

标签: javascript jquery callback

我在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

即使我在回调中初始化结果,当我提醒结果变量(它仍然是“”)时,我什么也得不到?为什么是这样?

3 个答案:

答案 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的异步变量 我希望它对你有用:)