Estoy usando wordpress. Hago una llamada ajax con jQuery, PHP echos un objeto JSON, pero la respuesta que recibo en javascript tiene un "0" agregado al final que hace que la decodificación del objeto json falle.¿Persona perdida en la respuesta de Ajax?
PHP:
function newspaper_getpost() {
$d = array('foo' => 'bar', 'baz' => 'long');
echo json_encode($d);
}
add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost');
JS:
$.post(MyAjax.ajaxurl,{
action : 'newspaper_getpost',
postID : $(this).val()
}, function(response) {
console.log(response);
});
Salida:
{"foo":"bar","baz":"long"}0
me trataron
echo substr(json_encode($d), 0, -1);
y obtuvo
{"foo":"bar","baz":"long"0
así que estoy seguro de que no es el lado de PHP. Podría dejar caer el "0" al final de la respuesta, pero siento que está sucediendo algo más grande y no quiero hacer un truco barato para que funcione. JQuery 1.6.1 por cierto. ¡Gracias!
¿Está utilizando la última versión de jQuery o la versión * minor-major *? Editar: intente corregir la respuesta directamente en Chrome Inspector o Firebug y vea si la recibe de PHP o si es un problema de JS. –
¿El '0' vestigial rompe tu código? Si no, lo dejaría solo. Podría ser una peculiaridad del navegador. – Blender
Parece que el error proviene de algo después de add_action(). Además, asegúrate de decirle $ .post que recibirá json al completar el parámetro de tipo en la función de publicación. – Dormouse