2012-01-16 84 views
0

你能帮我弄清楚为什么我得到“未定义”而不是价值。显示JSON数组的问题

因为它是清楚地看到,我遇到了麻烦从阵列中的数据,在萤火我得到这个作为响应....

{"status":"success", 
"response":[ 
    {"email": 
     {"email":"[email protected]", 
     "valid":"1", 
     "reason":null, 
     "confirmed_at":"0000-00-00 00:00:00", 
     "contact_email":"1", 
     "login_email":"1", 
     "users_id":"6375"}, 
    "history":[ 
     {"contactRole":"Non Classified Lead with History", 
     "contactProject":"2082", 
     "contactBrand":"B"}, 
     {"contactRole":"co Author", 
     "contactProject":"32", 
     "contactBrand":"B"}, 
     {"contactRole":"co Author", 
     "contactProject":"176", 
     "contactBrand":"B"}, 
     {"contactRole":"co Author", 
     "contactProject":"582", 
     "contactBrand":"B"}, 
     {"contactRole":"co Author", 
     "contactProject":"1858", 
     "contactBrand":"B"}, 
     {"contactRole":"Author", 
     "contactProject":"12", 
     "contactBrand":"J"}, 
     {"contactRole":"Editor", 
     "contactProject":"176", 
     "contactBrand":"B"}]}, 
    {"email": 
     {"email":"[email protected]", 
     "valid":"1", 
     "reason":null, 
     "confirmed_at":"0000-00-00 00:00:00", 
     "contact_email":"0", 
     "login_email":"0", 
     "users_id":"6375"}, 
    "history":[]}]} 

这是指我的JavaScript文件中的代码 http://pastebin.com/gPaEAKim

我得到的视图的快照。

enter image description here

只是要在安全方面......这是当我从控制器

Array 
(
    [status] => success 
    [response] => Array 
     (
      [0] => Array 
       (
        [email] => Array 
         (
          [email] => [email protected] 
          [valid] => 1 
          [reason] => 
          [confirmed_at] => 0000-00-00 00:00:00 
          [contact_email] => 1 
          [login_email] => 1 
          [users_id] => 6375 
         ) 

        [history] => Array 
         (
          [0] => Array 
           (
            [contactRole] => Non Classified Lead with History 
            [contactProject] => 2082 
            [contactBrand] => B 
           ) 

          [1] => Array 
           (
            [contactRole] => co Author 
            [contactProject] => 32 
            [contactBrand] => B 
           ) 

          [2] => Array 
           (
            [contactRole] => co Author 
            [contactProject] => 176 
            [contactBrand] => B 
           ) 

          [3] => Array 
           (
            [contactRole] => co Author 
            [contactProject] => 582 
            [contactBrand] => B 
           ) 

          [4] => Array 
           (
            [contactRole] => co Author 
            [contactProject] => 1858 
            [contactBrand] => B 
           ) 

          [5] => Array 
           (
            [contactRole] => Author 
            [contactProject] => 12 
            [contactBrand] => J 
           ) 

          [6] => Array 
           (
            [contactRole] => Editor 
            [contactProject] => 176 
            [contactBrand] => B 
           ) 

         ) 

       ) 

      [1] => Array 
       (
        [email] => Array 
         (
          [email] => [email protected] 
          [valid] => 1 
          [reason] => 
          [confirmed_at] => 0000-00-00 00:00:00 
          [contact_email] => 0 
          [login_email] => 0 
          [users_id] => 6375 
         ) 

        [history] => Array 
         (
         ) 

       ) 

     ) 

) 
+0

哪些变量在代码中未定义? – 2012-01-16 14:40:34

+0

我的猜测是它在两个'each()'循环中都使用'email'有关。尝试给他们不同的名字。 – jprofitt 2012-01-16 14:41:35

回答

1

如果您data变种在你的JS代码是调试它像数组的样子JSON响应的全部,那么你的工作一个级别太高,而内循环工作2个水平过高:

$.each(data['response'], function(i, email) { 
      ^^^^^^^^^^^^--- missing this 

     $.each(email, function(ii, ...)) { 

为您代码现在代表,内部循环的email也覆盖你的外部循环。

+0

不想推我的运气,但我可以请你详细说明这一点。我不太明白。 – 2012-01-16 14:53:48

+0

您的php脚本正在发送一个json对象,这可能是您发布的firebug转储。这意味着'data'对象的顶层是'data.response'和'data.status'。你的第一个JS .each循环正在处理'data'本身,所以你会得到'response'和'status'值。你的第二个.each循环再次作用于'data'作为一个整体,并将得到相同的两个键。 – 2012-01-16 17:29:25

+0

谢谢你解释! – 2012-01-16 18:02:26