我有一个JavaScript,里面使用Ajax获取值。 但是,当我想在ajax语句之外使用该值时,它将不起作用。
我的代码:
var value;
$.get("ajaxstatus.php",
{id: id})
.done(function(data) {
value = data
alert('inner' + data)
});
alert('outer' + value)
带有内部警报的警报只是给我从ajax返回的值,但是当我要在外部警报中使用该值时,它是空的,因为尚未分配。
使用ajax post
而不是get
时,我遇到了完全相同的问题。
如何从也在其外部的ajax语句中获取返回的值?
答案 0 :(得分:1)
JavaScript是异步的,这意味着在可能的情况下,它不会在评估代码时阻止处理。因此,尽管您的ajax调用可能需要一些时间才能返回,但javascript一直一直在处理代码。当您的AJAX调用最终返回时,它会触发一个回调,即.done()
。
所以...
$.get("ajaxstatus.php",
{id: id})
.done(function(data){
doWork(data);
});
function doWork(data) {
alert('after' + data);
};
答案 1 :(得分:0)
这是一个经典的异步问题,您必须在完成的回调中使用“数据”。
阅读有关promise,async / await的内容可以帮助您