2013-07-23 64 views
1

我從Facebook上的遊戲中提取數據並將這些值存儲在一個對象中,然後傳遞給PHP頁面。除了存儲在對象中的值以某種方式未被分配給全局對象變量的事實之外,一切都有效。爲什麼我的對象值在我的AJAX回調函數外不可用?

如果我打印出函數中每個鍵的值,一切都很好。但是,如果我在函數之外打印它們,它們將返回null,除了在函數外部分配的鍵值以外。

var myObj={}; 
var key, val, i, nxtCell; 
var srcStrings=["Attack","Defense","Health","Energy","Stamina"]; 

$.ajax(
{ 
type:'GET',url:'<game link'+uID, 
dataType:'html', 
success:function(data) 
{ 
    var table=$(data); 
    var myTD=table.find("td"); 

    $(myTD).each(function() 
    { 


     for(i=0;srcStrings.length>i;i++) 
     { 
      if($(this).text().indexOf(srcStrings[i])>=0 && $(this).text().indexOf("by")<0) 
      { 

       key=$.trim($(this).text()); 
       key=key.replace(':',''); 
       val=$.trim($(this).closest("td").next().text());     
       myObj[key]=val; 




      } 
     }; 
    }); 

      // This print works fine. 
    $.each(myObj, function(key, value) 
    { 
     console.log(key + ":" + value); 
    }); 

} 
}); 

// Printing myObj key -> value pairs does not work here. 

正如我所說的,最後每個函數打印出的對象值。但是他們不會在AJAX回調之外打印出來。我試圖將數據傳遞給AJAX調用之外的函數,看看它是否有影響,但沒有。

回答

2

這是因爲當您嘗試打印AJAX回調函數之外的值時,myObj仍然只是一個空對象(除了您爲其明確設置的任何鍵/值之外)。

E.G.

var myObj = {}; 
$.ajax({ 
    // Settings and callback function that manipulates myObj 
}) 

// Code to print myObj Key -> Value pairs 

所有這些代碼的串行運行,因爲你的AJAX調用沒有被你打印myObj的時間返回,它沒有你期望的值。

+0

感謝您的回覆。我在上面列出的代碼之後發佈了一篇文章。由於這個原因,這些值不會發布。你能告訴我什麼工作可以取悅嗎? – user2592690

+2

哦,等等......我會把另一個POST放在那個GET裏,也許這會起作用...... – user2592690

+0

是的,工作。再次感謝! – user2592690

相關問題