开发者

problem with ajax call of json and php

i have one AJAX function getting results from php file as bellow

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

now i want to use the value of g_foo but i can't i try using console.log but i am facing strange problem. like

if i use function like 开发者_运维技巧that

       $.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);
     }
    });

now i can see the value return from php file

if now i use function like that

         $.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);

now i got error undefined g_foo;

thanks


As ajax is asynchronous, there's no way of making sure that g_foo is available as soon as you call the $.ajax() request, hence it's not available outside that callback.

You could however, specify async:false to that .ajax() call, but it will most likely block the browser, attempting to wait for the request, something I don't think you want to happen.


To use it outside you have two ways:

1)make the call syncronous like this (this is not a best practice as the browser has to wait for the call to continue the flow):

   $.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) call a function on success and continue the flow from there using whatever data has been returned from the function (this is the best practice)

       $.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
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜