Domanda

Ho uno script per aggiornare una tabella di database. Ho bisogno di restituire un array di JSON e per aggiornare alcune tabelle con jQuery.

mio 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);

codice jQuery:

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

Ora ... il problema è che se io uso viene eseguito $.post("startsearch.php",{ searchId: $(this).val() }, function(data)) il copione e ho un bel avviso con valore indefinito. Se aggiungo il "json" parametro lo script non c'è nulla di più eseguito. Ho provato ad usare getJSON ma ancora una volta lo stesso problema.

Qualcuno ha qualche idea? Sono disperata ... questo è stato bugging me per quasi una settimana e ancora non sono riuscito a risolverlo.

È stato utile?

Soluzione

Nel file php assicurarsi di impostare il tipo di contenuto corretto:

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

in modo che possa jquery eval correttamente la risposta in un oggetto json.

Altri suggerimenti

È possibile ottenere i vostri dati di risposta nel seguente modo:

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

Si prega di non utilizzare avviso, installare Firebug nel vostro Firefox o abilitare la console javascript in Chrome o Safari. dopo che è possibile utilizzare console.log(data);

La mia ipotesi è che i dati non è una matrice. hanno anche uno sguardo al exmaple ciascuna () sui documenti di jQuery http: //docs.jquery. com / Ajax / jQuery.getJSON

Beh, sto confidando json2.js per analizzare i dati JSON restituiti dalla richiesta AJAX. È possibile scaricarlo da http://json.org . Questa libreria fornisce un modo migliore per analizzare qualsiasi stringa, e sarà un'eccezione se il pungiglione non è in JSON.

scrivo sempre la mia richiesta AJAX in questo modo:

$.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!');
    }
});

Durante l'elaborazione json, l'array in php diventerà membro variabile in JSON. Quindi, se in php è $output['status'], poi in JSON, sarà r.status.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top