在发出警报时,它会始终发出警报jojo
。 test2.php
有文字Loco
javascript全局变量不会在ajax回调中更新
div得到更新为Loco
但全局变量没有变化。我试过window.temp = data
,但它没有奏效。
如何获取变量中的返回值?请指导...
<div>
yolo
</div>
<script type="text/javascript">
var temp = 'jojo';
$.ajax({
url: 'test2.php', //Loco
success: function(data)
{
temp = data;
$('div').html(data);
},
error: function (err)
{
alert('error');
}
});
alert(temp);
var toBeUsedLater = temp; //updated temp value from ajax call
refreshTab();
</script>
Bsien。我建议你阅读关于ajax的异步行为。 –
好吧,我从中得到了很多有用的信息。我是JavaScript的初学者,所以帮助了很多。我想我必须用'async:false'选项来解决我目前的情况。 – Bsienn
'async:false'使ajax同步,但在大多数情况下不会使用,因为它会暂停执行,直到ajax返回并且页面可能会冻结。所以放置'var toBeUsedLater = temp;'的更好的地方是在'success'回调(你在设置innerhtml的地方)或者在一些promise钩子中。 你可以阅读关于jQuery的承诺。 –