2010-11-24 5 views
7

Estoy usando jQuery's $ .post call y está devolviendo una cadena con comillas a su alrededor. Las citas están siendo agregadas por la línea json_encode. ¿Cómo evito que esto agregue comillas? ¿Me estoy perdiendo algo en mi llamada de $ .post?

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

Respuesta

12

json_encode() devuelve una cadena desde el json_encode() documentación:.

Returns a string containing the JSON representation of value. 

es necesario llamar JSON.parse() en data, que analizar la cadena JSON y convertirlo en un objeto:

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

Sin embargo, como está concatenando la cadena data = en data en su llamada console.log(), lo que se registrará es data.toString(), que devolverá la representación de cadena de su objeto, que será [object Object]. Por lo tanto, va a querer registrar data en una llamada separada console.log(). Algo como esto:

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

En cualquier versión reciente de jQuery, automáticamente analizará el JSON si usa el tipo MIME correcto. –

+0

You da man !!!!! – Catfish

+0

@Matthew +1, entiendo esto, dado que todavía está una secuencia regresando, asumí que el tipo MIME era incorrecto. – Alex

1

¿Qué intenta exactamente hacer con los datos que está recibiendo? Si simplemente está tratando de obtener una clave particular del mensaje JSON, es decir, el "nombre" en "{"name":"sam"}" entonces (suponiendo que tenga un objeto JSON y no una matriz JSON) podrá usar data.name independientemente del doble . cotizaciones

+0

Estoy tratando de insertar los datos dentro de una etiqueta html una vez que la recupero. – Catfish

+0

Estoy usando json_encode (array()) para devolver el valor en mi archivo php, ¿es incorrecto? – Catfish

+1

@Catfish, también debe usar 'header ('Content-type: application/json');' para especificar que está devolviendo JSON. –

Cuestiones relacionadas