Jquery设置如何设置全局变量json post

时间:2012-08-06 19:20:54

标签: jquery variables post callback

给出以下示例:

var animal= null;

$.post("ajax.php",{data: data}, function(output){
     animal = output.animal;
},"json");

alert(animal);

原则上我希望变量返回ajax函数成功回调之外的东西,并在post之外声明它。但它仍然返回“null”。我做错了什么?

2 个答案:

答案 0 :(得分:4)

由于$.post()是异步的。所以你不能做你想做的事。而不是你必须使用如下所示的回调函数:

var animal= null;

$.post("ajax.php",{data: data}, function(data){

     // this callback will execute after
     // after finish the post with
     // and get returned data from server

     animal = data.animal;
     callFunc(animal);
},"json");

function callFunc(animal) {
  alert(animal);
}

答案 1 :(得分:2)

问题是警告命令在成功函数之前执行,因为$ .post根据定义是异步的。

要做你想做的事,你必须使用同步请求(代码不会在请求结束之前执行),如下所示:

 var animal = null;

 $.ajax({
        url: 'ajax.php',
        async: false,   // this is the important line that makes the request sincronous
        type: 'post',
        dataType: 'json', 
        success: function(output) {
                animal = output.animal;
             }
          );

  alert(animal);
祝你好运!