2010-11-24 9 views
7

Ich benutze den $ .post Aufruf von jQuery und er gibt eine Zeichenfolge mit Anführungszeichen zurück. Die Anführungszeichen werden von der json_encode-Zeile hinzugefügt. Wie verhindere ich das Hinzufügen von Anführungszeichen? Fehle ich etwas in meinem $ .post Anruf?

$.post("getSale.php", function(data) { 
    console.log('data = '+data); // is showing the data with double quotes 
}, 'json'); 

Antwort

12

json_encode() gibt einen String aus der json_encode() Dokumentation.

Returns a string containing the JSON representation of value. 

Sie müssen JSON.parse() auf data nennen, die die JSON-String analysieren wird und es in ein Objekt drehen:

$.post("getSale.php", function(data) { 
    data = JSON.parse(data); 
    console.log('data = '+data); // is showing the data with double quotes 
}, 'json'); 

Da Sie jedoch die Zeichenfolge data = mit data in Ihrem console.log()-Aufruf verketten, wird data.toString() protokolliert, die die Zeichenfolgendarstellung Ihres Objekts zurückgibt, die [object Object] sein wird. Sie werden also data in einem separaten console.log()-Aufruf protokollieren wollen. Etwas wie folgt aus:

$.post("getSale.php", function(data) { 
    data = JSON.parse(data); 
    console.log('data = '); // is showing the data with double quotes 
    console.log(data); 
}, 'json'); 
+1

In jeder aktuellen Version von jQuery wird der JSON automatisch analysiert, wenn Sie den richtigen MIME-Typ verwenden. –

+0

Sie sind ein Mann !!!!! – Catfish

+0

@Matthew +1, ich verstehe das, da es immer noch eine Zeichenfolge ist, die zurückkommt, nahm ich an, dass der MIME-Typ falsch war. – Alex

1

Was genau versuchen Sie mit den Daten, die Sie erhalten? Wenn Sie nur versuchen, einen bestimmten Schlüssel der JSON-Nachricht zu erhalten, dh den "Namen" in "{"name":"sam"}"" (vorausgesetzt, Sie haben ein JSON-Objekt und kein JSON-Array), können Sie unabhängig vom Doppel data.name verwenden . Zitate

+0

Ich versuche, die Daten innerhalb eines HTML-Tags einfügen, wenn ich es zurück. – Catfish

+0

Ich benutze json_encode (array()), um den Wert in meiner PHP-Datei zurückzugeben, ist das falsch? – Catfish

+1

@Catfish, Sie sollten auch 'header ('Content-type: application/json');' verwenden, um anzugeben, dass Sie JSON zurückgeben. –

Verwandte Themen