在ajaxstatement之外使用ajax获取值

时间:2018-07-27 00:10:02

标签: javascript jquery ajax

我有一个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语句中获取返回的值?

2 个答案:

答案 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)

这是一个经典的异步问题,您必须在完成的回调中使用“数据”。

阅读有关promiseasync / await的内容可以帮助您