Frage

Ich habe ein Skript zum Aktualisieren einer Datenbanktabelle. Ich muss ein JSON -Array zurückgeben und einige Tische mit JQuery aktualisieren.

Mein PHP -Skript:

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

JQuery Code:

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

Jetzt ... das Problem ist, dass wenn ich benutze $.post("startsearch.php",{ searchId: $(this).val() }, function(data)) Das Skript wird ausgeführt und ich bekomme einen schönen Alarm mit und definierter Wert. Wenn ich den Parameter "JSON" hinzufüge, wird das Skript nicht mehr ausgeführt. Ich habe versucht, GetJson zu verwenden, aber auch das gleiche Problem.

Hat jemand irgendwelche Ideen? Ich bin verzweifelt ... das hat mich seit fast einer Woche nervt und ich habe es immer noch nicht geschafft, es zu lösen.

War es hilfreich?

Lösung

Stellen Sie in Ihrer PHP -Datei sicher, dass Sie den richtigen Inhaltstyp festlegen:

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

so dass jQuery richtig eval Die Antwort in ein JSON -Objekt.

Andere Tipps

Sie können Ihre Antwortdaten wie folgt erreichen:

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

Bitte verwenden Sie keine Warnung, installieren Sie Firebug in Ihr Firefox oder aktivieren Sie die JavaScript -Konsole in Chrome oder Safari. Danach können Sie verwenden console.log(data);

Ich vermute, dass Daten kein Array sind. Schauen Sie sich auch die jeweils () Exmaple auf den Jquery -Dokumenten an http://docs.jquery.com/ajax/jquery.getjson

Nun, ich vertraue darauf json2.js Um die von der AJAX -Anfrage zurückgegebenen JSON -Daten zu analysieren. Sie können es herunterladen http://json.org. Diese Bibliothek bietet eine bessere Möglichkeit, eine Saite zu analysieren, und stellt eine Ausnahme aus, wenn der Stich nicht in JSON ist.

Ich schreibe immer meine Ajax -Anfrage wie folgt:

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

Bei der Verarbeitung von JSON wird das Array in PHP in JSON ein variables Mitglied. Also, wenn es in Ihrem PHP ist, ist es $output['status'], dann wird es in JSON sein r.status.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top