2013-07-23 32 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

相关问题