2016-10-28 2 views
1

Ich entwickle eine Anwendung, die einen Ajax-Aufruf an ein PHP-Skript ausführt, das json_encode Daten zurückgibt.JSON parse error - Uncaught TypeError: Kann 'in' Operator nicht verwenden, um nach '1009' zu suchen

Die Daten werden wie erwartet von PHP zurückgegeben. Aber wenn man versucht, es in Jquery zu analysieren Ich erhalte eine Konsole Fehler:

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

durch eine Kopie meiner Datenarray gefolgt.

Ein Beispiel für die JSON-Daten codiert ist hier:

[ 
{"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]"}, 
] 

Die jquery Ich verwende wie folgt ist. Die gewünschte Ausgabe ist für sich neben ein tickbox eine Liste von Personen der E-Mail-Adressen anzuzeigen:

$(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>"); 
      }); 
     }); 
    }); 
}); 

Was mit dieser falsch ist, und was macht den Fehler Mittelwert (ich kann 1009 überall in meinen Daten nicht sehen, obwohl nicht sicher, ob das, was es eigentlich bedeutet)

+2

* "Ich zeige nur den .done Teil der Kürze" * Zu viel Kürze. Was sind Daten? Woher kommt es? Wenn Sie es über 'ajax' laden und es mit einem passenden' Content-Type'-Header zurückgeben, wurde es wahrscheinlich in ein Array von Objekten geparst, aber ... –

+0

Do 'console.log (data);' und einfügen Ihre Ausgabe in Frage gestellt. – divix

+0

@ T.J.Crowder aktualisiert, um volle jQuery im Einsatz zu zeigen – Andy

Antwort

2

Sie müssen erste Ihre JSON-Daten analysieren:

var parsedData = $.parseJSON(data); 

Aber wenn Ihr PHP-Skript die JSON mit dem richtigen Content-Type zurückgibt, die Sie nicht brauchen zu TU das. Wenn Sie sicherstellen, dass das PHP-Skript Content-Type: application/json sendet, wird es von jQuery automatisch analysiert, bevor es Ihnen übergeben wird. Das ist also eine andere Möglichkeit, das Problem zu beheben.

+2

Odds sind jQuery bereits geparst; Schade, das OP hat uns nicht ein bisschen mehr Kontext gezeigt. –

+0

Hmmm, rechts .... –

+0

Ich habe es aktualisiert, um die volle jQuery im Einsatz zu zeigen und versuchte auch @ Rax Linie, hat aber keinen Unterschied gemacht – Andy

-2

Nicht so sicher !! aber können Sie versuchen, mit largeJSONobject.data LIKE $ .each (largeJSONobject.data, Funktion (Schlüssel, Wert) { $ (“. Modal-Körper "). Html ('' + value.email +"
"); });

Verwandte Themen