json和php的ajax调用问题

时间:2011-07-30 11:04:38

标签: php jquery ajax json

我有一个AJAX函数从php文件中获取结果如下所示

$.ajax({
             type: "POST",
             url: "GeteT.php",
             cache:false,
             data:"id="+ encodeURIComponent(1),
             dataType:'json',
             success: function(json)
             {
         g_foo = json.foo;
         }
        });

现在我想使用g_foo的值,但我不能尝试使用console.log但我面临着奇怪的问题。像

如果我使用这样的功能

       $.ajax({
         type: "POST",
         url: "GeteT.php",
         cache:false,
         data:"id="+ encodeURIComponent(1),
         dataType:'json',
         success: function(json)
         {
     g_foo = json.foo;
        console.log(g_foo);
     }
    });

现在我可以看到从php文件返回的值

如果现在我使用这样的功能

         $.ajax({
         type: "POST",
         url: "GeteT.php",
         cache:false,
         data:"id="+ encodeURIComponent(1),
         dataType:'json',
         success: function(json)
         {
     g_foo = json.foo;

     }
    });
        console.log(g_foo);

现在我得到错误undefined g_foo;

感谢

2 个答案:

答案 0 :(得分:3)

由于ajax是异步的,因此一旦调用g_foo请求,就无法确保$.ajax()可用,因此在回调之外无法使用它。

但是,您可以为async:false调用指定.ajax(),但它很可能会阻止浏览器,尝试等待请求,这是我认为您不希望发生的事情。< / p>

答案 1 :(得分:2)

在外面使用它有两种方法:

1)使调用同步这样(这不是最佳做法,因为浏览器必须等待调用才能继续流程):

   $.ajax({
     type: "POST",
     url: "GeteT.php",
     cache:false,
     data:"id="+ encodeURIComponent(1),
     dataType:'json',
     async: false,
     success: function(json)
     {
 g_foo = json.foo;


 }
});
    console.log(g_foo);

2)在成功时调用函数并使用从函数返回的任何数据继续从那里开始流程(这是最佳实践)

       $.ajax({
         type: "POST",
         url: "GeteT.php",
         cache:false,
         data:"id="+ encodeURIComponent(1),
         dataType:'json'
         success: function(json)
         {
     g_foo = json.foo;
        yourfunction(g_foo);
     }
    });

function yourfunction(g_foo){
    //here g_foo is set
}