2016-07-09 8 views
0

Ich versuche, ein Objekt, das ich von PHP bekomme in ein Array in Javascript zu konvertieren, aber ich weiß nicht, wie das zu lösen, ich versuche einige Lösungen, die ich gelesen habe, bevor diese Frage, aber es funktioniert nicht, ich habe so etwas wie dies in PHPWie konvertiert man ein Objekt von PHP zu einem Array in Javascript?

$data = explode(',', $articles); 

$length = count($data); 

for ($i = 0; $i < $length; $i++) { 

    $products = explode('-', $data[$i]); 

    $product_key = $products[0]; 
    $quantity = $products[1]; 

    $get_data_product = mysqli_query($connection, "SELECT * FROM articles WHERE id_article = '".$product_key."' AND id_user = '".$id_user."'") or die (mysqli_error($connection)); 
    $get_data_product = mysqli_fetch_assoc($get_data_product); 
    $article_name  = $get_data_product['name']; 
    $article_price = $get_data_product['price']; 


    $info[$i] = array('name' => $article_name, 'quantity' => $quantity, 'price' => $article_price); 
} 

echo json_encode($info); 

Und in Javascript

success: function(info) { 

    var data = JSON.stringify(info); 

    console.log(data); 
} 

Console log diesen

[{"name":"prueba 2","quantity":"4","price":"100"}] 

ich habe versucht, sie alle mit ths co lesen nur de aber es Daten, die zeigen, wenn ich Konsole Protokoll oder eine Warnung

verwenden
$.each(data, function(i) { 

    $('#content').append('<tr class="text-center">' + 
          '<td>' + data[i].quantity + '</td>' + 
          '<td>' + data[i].name + '</td>' + 
          '</tr>'); 

}); 
+2

Was ist die erwartete Ausgabe? –

+1

Warten Sie, warum verwenden Sie stringify? Das ändert es zurück in nur Zeichenfolge. – prodigitalson

+1

PS: Wenn Ihr Problem noch nicht gelöst ist, müssen Sie uns mehr Quellen wie HTML zur Verfügung stellen. Guter Platz @ Prodigitalson, der hier wichtig sein wird – Jonathan

Antwort

2

Wie prodigitalson Notizen in den Kommentaren - und ist eigentlich die Antwort - Sie konvertiert Ihre Daten in ein JSON-Objekt in PHP, aber dann wandeln Sie unnötig in eine Zeichenfolge, so dass Sie es dann überhaupt nicht manipulieren können.

Zum Beispiel JSON.stringify([{test: 1}]) wird "[{test: 1}]".

dass Entfernen, Sie werden dann in einer Schleife auf sie in der ursprünglichen Art und Weise können, oder Sie können auf es Schleife einen Standard mit JavaScript foreach wo data Ihre Antwort [{"name":"prueba 2","quantity":"4","price":"100"}] in Ihrer Callback ist enthalten:

data.forEach(function (e) { 
    $('#content').append(
     '<tr class="text-center">\n' + 
      '<td>' + e.quantity + '</td>\n' + 
      '<td>' + e.name + '</td>\n' + 
     '</tr>\n' 
    ); 
}); 
+1

Dies ist eine nette Lösung, einfacher als das, was ich tat, danke –

1

Ich denke, Ihr Code in Ordnung ist, wenn Sie dies tun in Javascript-Code:

success: function(info) { 

    var data = JSON.stringify(info); 

    alert(data[0].name); 
} 

Das Alarm die erwartete zeigen sollte Wert der Namenseigenschaft des Datenobjekts.

+0

Wie könnte ich alle Elemente lesen? Ich habe versucht mit '$ .each' –

+0

@Vladmir Sie meinen' data [0] .name'? –

+0

@ProfessorZoom Wenn Sie die richtige Antwort erhalten, sollten Sie das oder '[] .forEach' verwenden können. –

2

PHP End Beispielcode:

<?php 
for ($i = 0; $i < 3; $i++) { 
    $quantity=rand(5,10); 
    $price=rand(500,1000); 
    $info[$i] = array('name' =>'prueba'.$i, 'quantity' =>"$quantity", 'price' => "$price"); 
} 

echo json_encode($info); 
?> 

JQuery Ende:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Json</title> 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $.ajax({ type:"POST", url: "array.php", dataType: "json", success: function(result){ 
        console.log(result); 
        for(i=0; i<result.length;i++) 
        { 
         console.log(result[i]); 
         console.log(result[i].name); 
         console.log(result[i].quantity); 
         console.log(result[i].price); 
        } 

      }}); 

     }); 

    </script> 
</head> 
<body> 

</body> 
</html> 

Beispielantwort im Test:

[{"name":"prueba0","quantity":"8","price":"574"},{"name":"prueba1","quantity":"8","price":"555"},{"name" 
:"prueba2","quantity":"7","price":"901"}] 

Referenz: http://www.jsoneditoronline.org/?id=5e23cd942a949e86545fa320a65ff0e7

Hope this löst Ihr Problem. Vielen Dank.

+0

'result.length' funktioniert? weil es mit mir nicht funktionierte, als ich es probierte, weil das Ergebnis ein Objekt ist –

+0

Sie haben nicht dataType: "json" während der Anfrage verwendet und das wurde nicht benötigt var data = JSON.stringify (info); result.length gibt Ihnen die Anzahl. Vielen Dank. Hoffe, dass dein Problem gelöst ist. –

1

Ihre console.log (Daten); Show json arry die [{ "name": "prueba 2", "Menge": "4", "Preis": "100"}] ist

versuchen, diese

$ DataObj = data1 = json_decode (Daten);

$ arry = (Array) $ Datenobjekt;

versuchen Sie diesen Code

+0

Sie versuchen also, eine JavaScript-Variable in PHP-Code zu lesen? –

Verwandte Themen