2016-04-20 4 views
0

ich eine json in PHP wie folgt zu erstellen:Uncaught Typeerror: Kann nicht 'in' Operator in jquery/json verwenden

$details= array(); 
$ret = array(); 

for($i=0;$i<3;$i++) { $details["name"] = "name".$i; $ret[] = $details;} 

Und dann schicken Sie es an eine Jquery Ajax:

echo json_encode($ret,JSON_UNESCAPED_UNICODE); 
die(); 

In jQuery ajax:

$.ajax({ 
    url: "index2.php?id=upload", 
    type: "POST", 
    data: new FormData($("#form")[0]), 
    contentType: false, 
    cache: false, 
    processData:false, 
    returnType:"json", 
    success: function(data) 
    { 
     console.log('names:'+JSON.stringify(data)); 
     $.each(data, function(i) 
     { 
      console.log('name:'+data[i]['name']); 
     } 
    }, 

erste Protokoll druckt Konsole, aber zweitens: ich diesen Fehler:

jquery-2.2.3.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in [{"name":"name1"},{"name":"name2"},{"name":"name3"}]

Auch versuche ich

$.each(JSON.parse(data), function(i) 
       { ..} 

aber ich drucke leer:

name:undefined

+1

was 'Daten [i] .name' nicht solche Parameter ist? –

+0

'var newData = JSON.stringify (Daten); $ .Each (newData, Funktion (i) { console.log ('Name:' + newData [i] ['Name']); // oder einmal prüfen newData [i] .name } ' –

+2

Show der JSON, der tatsächlich zum Browser geht, nicht der PHP-Code, der ihn erzeugt, und der Code, der in Anführungszeichen steht, wird überhaupt nicht ausgeführt (Syntaxfehler, nicht nur am Ende) * Kopieren-und-Einfügen *, um die Einführung von Nebensätzen zu vermeiden –

Antwort

1

Wenn das Javascript konvertiert Ihren JSON-String in einen JavaScript-Datentyp wird es eine Reihe von seinen Objekte wie diese

Array 
(
    [0] => stdClass Object 
     (
      [name] => name0 
     ) 

    [1] => stdClass Object 
     (
      [name] => name1 
     ) 

    [2] => stdClass Object 
     (
      [name] => name2 
     ) 

) 

So sollte Ihr Javascript sein

Auch returnType:"json"dateType:"json" so weit sein sollte, wie ich weiß, dass es als returnType:

$.ajax({ 
     url: "index2.php?id=upload", 
     type: "POST", 
     data: new FormData($("#form")[0]), 
     contentType: false, 
     cache: false, 
     processData:false, 
     dateType:"json", 
     success: function(data) 
     { 
      console.log('names:'+JSON.stringify(data)); 
      $.each(data, function(i,v) 
      { 
       console.log('name:'+v.name); 
      } 
     }, 
1
$.ajax({ 
     url: "index2.php?id=upload", 
     type: "POST", 
     data: new FormData($("#form")[0]), 
     contentType: false, 
     cache: false, 
     processData:false, 
     returnType:"json", 
     success: function(data) 
     { 
      console.log('names:'+JSON.stringify(data)); 
      $.each(JSON.parse(data), function(i) 
      { 
       console.log('name:'+i['name']); 
      } 
     }, 
Verwandte Themen