2011-07-30 43 views
0

的Ajax調用我從PHP文件一個AJAX功能得到結果爲波紋管問題JSON和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); 

現在,我得到錯誤未定義的g_foo;

感謝

回答

3

隨着Ajax是異步的,有沒有確保g_foo可只要你撥打$.ajax()請求的方式,因此它不是可用的回調之外。

但是,您可以將async:false指定爲該.ajax()調用,但它很可能會阻止瀏覽器,試圖等待請求,而我認爲您不希望發生這種情況。

2

要使用它以外,你有兩種方式:

1)撥打電話syncronous這樣的(這不是最佳做法,瀏覽器必須等待調用繼續流):

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