AJAX-Anfrage callback mit jQuery

Ich bin neu in der Verwendung von jQuery für die Handhabung von AJAX, und habe ein grundlegendes Skript geschrieben, um die Grundlagen zu erhalten. Momentan sende ich eine AJAX-Anfrage an dieselbe Datei, und ich möchte eine zusätzliche Verarbeitung basierend auf den Ergebnissen dieses AJAX-Anrufs durchführen.

Hier ist mein Code:

**/*convertNum.php*/** $num = $_POST['json']; if (isset($num)) echo $num['number'] * 2; ?>      td {border:none;}    
Number To Send
Number Returned
$(document).ready(function () { $('#getNum').click(function () { var $numSent = $('#numSend').val(); var json = {"number":$numSent}; $.post("convertNum.php", {"json": json}).done(function (data) { alert(data); } ); }); });

Hier ist die Antwort, die ich bekomme, wenn ich die Nummer ‘2’ einreiche:

 4      td {border:none;}    
Number To Send
Number Returned
$(document).ready(function () { $('#getNum').click(function () { var $numSent = $('#numSend').val(); var json = {"number":$numSent}; $.post("convertNum.php", {"json": json}).done(function (data) { alert(data); } ); }); });

Offensichtlich bin ich nur daran interessiert, die Zahl ‘4’ zu empfangen und zu verwenden, daher meine Frage: Was ist der beste Weg, genau anzugeben, welche Daten ich zurückgeben möchte?

Einige Gedanken, die ich hatte:

  • alles HTML in eine if-statement einfügen (dh, wenn $ num isset, gib html NICHT aus; sonst gib HTML aus), aber dann gebe ich HTML wieder, und das würde ich lieber nicht tun.
  • Einrichten eines separaten PHP-Skripts, um meinen AJAX-Anruf zu erhalten: Das war, was ich ursprünglich gemacht habe, und es funktioniert gut. Ich bin jedoch daran interessiert, alles in einer Datei zu behalten und wollte mögliche Wege aufzeigen.

Ich bin mir sicher, dass es einen eleganten Weg dafür gibt. Danke für Anregungen!

Der elegante Weg wäre, eine separate (!) PHP-Datei zu haben, die nur die number times 2 Teile Ihres aktuellen PHP ausgibt. Dann generieren Sie eine AJAX-Anfrage von Ihrem aktuellen PHP zum neuen separaten PHP.

Ich glaube, dieser Beitrag beantwortet einen Aspekt dessen, was Sie sehen – das Echo der gesamten Seite in Ihrer Alarmbox.

Als nächstes, hier sind ein paar gute Posts, um die Grundlagen von AJAX zu bekommen:

Ein einfaches Beispiel

Komplizierteres Beispiel

Füllen Sie Dropdown 2 basierend auf Auswahl in Dropdown 1 auf

Sie könnten die(); nachdem Sie die Nummer wiederholt haben, wenn Sie sie wirklich auf derselben Seite behalten möchten. Dies beendet die Ausführung des Skripts. Vergessen Sie nicht, Klammern um die if-statement hinzuzufügen:

 if (isset($num)) { echo $num['number'] * 2; die(); } 

Es ist jedoch nicht die eleganteste Lösung.

HINWEIS * Der bessere Ansatz besteht darin, solche Dinge in einer separaten Datei zu speichern, damit sie leichter zu lesen und leichter zu verstehen sind, insbesondere wenn Sie eine gute Namenskonvertierung verwenden.

Es ist eine schlechte Vorgehensweise, aber hier gehe ich :):

 < ?php $num = $_POST['json']; if (isset($num)) echo ($num['number'] * 2); die(); ?> 

oder noch besser:

 < ?php $num = $_POST['json']; if (isset($num)) die($num['number'] * 2); //In case of error you could put them in brackets ?> 

PS Als Alternative zu die(); Sie könnten exit(); Beide machen ziemlich genau dasselbe: Beenden der weiteren Ausführung

Ich weiß nicht, wie effizient das ist, aber Sie können etwas tun wie:

 < ?php /*convertNum.php*/ $num = isset($_POST['json']) ? $_POST['json'] : NULL; //you have errors in this line if (!is_null($num)){ echo $num['number'] * 2; exit(); //exit from script } ?>