Jquery 将数据从$.post设置为变量

Jquery 将数据从$.post设置为变量,jquery,ajax,Jquery,Ajax,守则: $.post('script.php',{value:value},function(data) { var Aquaman= ???; }); 现在我的问题是,如果我想将数据值设置到Aquaman变量中,我该怎么做?欢迎来到异步逻辑的奇妙世界 你所需要做的就是var-Aquaman=data--但是,该变量将仅存在于该匿名函数中 您可以通过按常规方式分配全局变量来解决此问题: var Aquaman; $.post('script.php',{value:v

守则:

 $.post('script.php',{value:value},function(data)
 {
        var Aquaman= ???;
 });

现在我的问题是,如果我想将数据值设置到Aquaman变量中,我该怎么做?

欢迎来到异步逻辑的奇妙世界

你所需要做的就是
var-Aquaman=data--但是,该变量将仅存在于该匿名函数中

您可以通过按常规方式分配全局变量来解决此问题:

 var Aquaman;
 $.post('script.php',{value:value},function(data) {
      Aquaman= data;
 });
但是,在AJAX调用完成之前,不会设置此全局变量。例如,如果其他AJAX调用或用户事件正在调用
Aquaman
,这可能是可取的。但是,以下代码无法按预期工作:

 var Aquaman;
 $.post('script.php',{value:value},function(data) {
      Aquaman= data;
 });
 console.log(Aquaman); // displays nothing
…因为
console.log()
是在
$.post()
完成之前立即运行的

防止这种情况发生的唯一方法是进行同步:


…但这会强制脚本停止并等待回调完成,从而抵消AJAX的大部分优势。在几乎所有情况下,最好让AJAX保持异步,并处理回调中的
数据。

要简化一个如此基本的问题,请在全局范围内声明您的Aquaman变量:

var Aquaman;

function something()
{
     $.post('script.php',{value:value},function(data)
     {
         Aquaman= data;
     });
}

您可以找到更好的方法来执行此操作,请参见。

数据的值分配给
Aquaman
非常简单,如下所示:

$.post('script.php',{value:value},function(data){
    var Aquaman= data;
});
但是,由于您需要在
$之外使用此值。post
回调需要在此函数之外定义
Aquaman
。例如:

//Some Code
$.post(...,function(data){
  var Aquaman = data;
});

// Aquaman is undefined out here.
然而:

var Aquaman;
$.post(...,function(data){
    Aquaman = data;
});
// Aquaman exists (but be careful, AJAX calls make this value not accessible
// until the callback has been executed.)

@符文,我试过了,不起作用。@RuneFS的答案完全正确,但。。。它可能不会像预期的那样对您有效,因为BlazeMonger的答案是您当前正在做的是您应该如何做。请记住,它只在传递到
$的
函数()中可用。。。或者(如果它是一个全局变量),它也将在回调之外可用。但是只有在请求完成之后。那么你就必须去掉“var”关键字@devnull69当然,如果您想使用setTimeout或其他事件来处理可能需要10毫秒或45秒的ajax请求,或者切换到gasp
async:false
Ah ok ok,我知道了。谢谢你的回答。
var Aquaman;
$.post(...,function(data){
    Aquaman = data;
});
// Aquaman exists (but be careful, AJAX calls make this value not accessible
// until the callback has been executed.)