2016-10-28 22 views
1

我正在開發一個應用程序,它會對PHP腳本執行Ajax調用,該腳本返回json_encode數據。json解析錯誤 - 未捕獲TypeError:不能使用'in'運算符來搜索'1009'

數據正在按預期從PHP返回。但是,當試圖解析它在jQuery中我得到一個控制檯錯誤:

Uncaught TypeError: Cannot use 'in' operator to search for '1009'

其次是我的數據數組的副本。

的JSON編碼數據的一個例子是在這裏:

[ 
{"u_id":"21747","fname":"Andy","lname":"","email":"[email protected]"}, 
{"u_id":"3748","fname":"John","lname":"","email":"[email protected]"},  
{"u_id":"451750","fname":"Peter","lname":"","email":"[email protected]"}, 
] 

我使用jQuery如下。所需的輸出是它顯示人的電子郵件地址列表的tickbox旁邊:

$(function() { 
    $('#myModal').on('shown.bs.modal', function() { 
     $(".modal-body").html("Loading..."); 
      $.ajax({ 
       url: "<?= $router->pathFor('/admin/ajax/find-user'); ?>", 
       data: { 
        searchInput: $('#searchInput').val() 
       }, 
       method: "POST", 
      }).done(function(data) { 
      //$(".modal-body").html(data); 
      $.parseJSON(data); 
      $.each(data, function(key, value){ 
       $(".modal-body").html('<input type="checkbox" id="' + value.u_id + '">' + value.email + "<br>"); 
      }); 
     }); 
    }); 
}); 

有什麼不對的,又是什麼錯誤均值(我看不到1009我的數據在任何地方,雖然不知道這是什麼,它實際上意味着)

+2

*「我只是爲了簡潔而顯示.done部分」*太簡短。什麼是'數據'?它來自哪裏?如果你通過'ajax'加載它,並用一個適當的Content-Type頭返回它,它可能被解析成一個對象數組,但是...#: –

+0

'console.log(data);'and paste你的輸出成問題。 – divix

+0

@ T.J.Crowder已更新,以顯示正在使用的jquery – Andy

回答

2

您需要解析您的JSON第一個數據:

var parsedData = $.parseJSON(data); 

但是,如果你的PHP腳本返回JSON使用正確的Content-Type,你不需要至 去做。如果你確保PHP腳本發送Content-Type: application/json,jQuery會在給你之前自動解析它。所以這是解決問題的另一種方法。

+2

很可能jQuery已經解析過它; OP太糟糕了,沒有向我們展示更多的背景。 –

+0

嗯,正確.... –

+0

我已經更新它顯示完整的jquery在使用中,也試過@ Rax的線,但沒有任何區別 – Andy

-2

不那麼肯定! 但你可以嘗試用largeJSONobject.data LIKE $。每個(largeJSONobject.data,功能(鍵,值){ $(」模體 「)HTML( '' + value.email +」
「); });

相關問題