Error al retornar JSON: “Unexpected token in JSON at position 0”

publicado por: Anonymous

Ejecuto la consulta SQL y recibo el array procesado con fetch_assoc. Finalmente en php lo devuelvo a través de ajax con json_encode.

echo json_encode($this->rows);

Y este sería el código en JS:

function search(){ //recojo los datos y llamo a askDatabase
    var id_vehicle = document.buscar.id_vehicle.value;
    var brand = document.buscar.brand.value;

    askDatabase(id_vehicle, brand);
}

function askDatabase(id_vehicle, brand){ //Comunicación con PHP

    __ajax("controller.php?p=list/", "id_vehicle="+id_vehicle+"&brand="+brand)
    .done( function( info ){
        console.log("DATA: " + info);
        info = JSON.parse(info); //AQUI EL ERROR
        renderData(info);
    });
}

function __ajax(url, data){ //Ajax configured
    var ajax = $.ajax({
        "method": "POST",
        "url": url,
        "data": data
    })
    return ajax;
}

Recibo el siguiente string (var info), pero yo quiero un objeto:

[{"id_vehicle":"1","class":"business","brand":"Citroen","model":"C5 2.0hdi","year":"2010","km":"129000"}]

El cual al intentar parsear, produce el siguiente error, como informa la consola de chrome:

Uncaught SyntaxError: Unexpected token  in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.<anonymous> (controller.php:127)
    at fire (jquery-3.1.1.js:3305)
    at Object.fireWith [as resolveWith] (jquery-3.1.1.js:3435)
    at done (jquery-3.1.1.js:9242)
    at XMLHttpRequest.<anonymous> (jquery-3.1.1.js:9484)

¿Cómo puedo retornar el objeto JSON desde PHP a través de ajax?

solución

Ya lo he solucionado, no es nada del parseo JSON etc.

El problema era simplemente que el documento estaba guardado en codificacion UTF-8 con BOM.

BOM es el caracter que se había insertado en la respuesta y por eso no podía aplicar el JSON.parse();

La solución es guardar en UTF-8 sin BOM.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *