2012-01-16 57 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