Pregunta

Tengo un script para actualizar una tabla de base de datos. Tengo que devolver una matriz JSON y actualizar algunas tablas con jQuery.

mi script php:

$update = mysql_query("UPDATE PLD_SEARCHES SET STATUS = 1, TOTAL_RESULTS = ".$scrapper->getTotalResults().",RESULTS = $resultCounter WHERE ID = ".$searchId);
$output = array("status"=>"COMPLETED","results"=>$resultCounter,"totalResults"=>$scrapper->getTotalResults());
echo json_encode($output);

código de jQuery:

$("button").live("click", function(event){
                    event.preventDefault();
                    $.getJSON("startsearch.php",{ searchId: $(this).val() }, function(data){
                        alert(data[0].status);
                    });

Ahora ... el problema es que si yo uso $.post("startsearch.php",{ searchId: $(this).val() }, function(data)) el script se ejecuta y me da una alerta agradable con valor indefinido. Si añado el "json" parámetro de la secuencia de comandos no se ejecuta más. He intentado utilizar getJSON pero de nuevo el mismo problema.

¿Alguien tiene alguna idea? Estoy desesperado ... esto me ha estado molestando durante casi una semana y todavía no he conseguido resolverlo.

¿Fue útil?

Solución

En el archivo php asegúrese de establecer el tipo de contenido correcto:

header("Content-type: application/json; charset=utf-8");

modo que jquery puede eval correctamente la respuesta en un objeto JSON.

Otros consejos

Se puede llegar a los datos de respuesta de la siguiente manera:

alert(data.status);
alert(data.results);
alert(data.totalResults);

Por favor, no use alerta, instalar Firebug en su Firefox o activar la consola JavaScript en Chrome o Safari. después de que se puede utilizar console.log(data);

mi suposición es que los datos no es una matriz. También echar un vistazo a la exmaple cada una () en la documentación de jQuery http: //docs.jquery. com / Ajax / jQuery.getJSON

Bueno, yo estoy confiando json2.js para analizar los datos JSON devueltos de petición AJAX. Puede descargarlo desde http://json.org . Esta biblioteca proporciona una mejor manera de analizar cualquier cadena, y tendrá una excepción si la picadura no está en JSON.

Siempre escribo mi petición AJAX como esta:

$.post(URL,
  { PARAM },
  function(data){
    try {
      var r = JSON.parse(data);
      //this for your code above
      alert (r.status); //should be 'COMPLETED'
    }
    catch (e) {
      //data is not in json format, or there are another exception in try block
      //do something about it
      alert('Exception occured, please check the data!');
    }
});

Al procesar JSON, la matriz en php se convertirá en un miembro de variable en JSON. Así que si en su php es $output['status'], a continuación, en JSON, se r.status.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top