Ich habe Probleme, ein Array auf einer PHP-Seite mit AJAX zu posten. Ich habe diese Frage als Anleitung benutzt, aber aus welchen Gründen auch immer Ich kann es immer noch nicht zur Arbeit bringen. Von dem, was ich mit print_r($_POST)
sagen kann, poste ich ein leeres Array, aber auf der HTML / Javascript Seite verwende ich eine Warnung, um zu sehen, dass das Array gefüllt wurde. Der Post funktioniert, weil er leere Werte in eine MySQL-Datenbank beim Post eingibt, aber ich kann nicht herausfinden, warum es ein leeres Array übergibt. Der Code ist wie folgt:
Javascript:
%Vor%PHP:
%Vor% print_r($_POST)
zeigt nur Array () auf der php-Seite an, während die jsonString-Warnung auf der Javascript-Seite angezeigt wird
["routeID:testRoute",
"custID:testCustID",
"stopnumber:teststopnumber",
"customer:testCustomer",
"latitude:10",
"longitude:20",
"timestamp:00:00:00"]
Wer sieht was ich falsch mache?
Hinweis: Die Ursache main für die Ausgabe von array()
ist die Tatsache, dass Sie den Client vor der asynchronen (AJAX) Anfrage umleiten wurde gesendet / verarbeitet
Verschieben Sie window.location = "AddtoDatabase.php";
grundsätzlich in den Erfolgsrückruf, wie weiter unten erwähnt.
Erstes Problem: Anstatt ein Array zu verwenden, sollten Sie ein Objektliteral verwenden (~ = assoc array in php).
Ändern Sie dazu dieses Bit:
%Vor%Und schreibe das stattdessen:
%Vor%Es gibt auch nichts mehr. Zum Schluss senden Sie einfach die Daten wie folgt:
%Vor% Zweitens leitet Ihre postData
-Funktion den Client um, bevor die AJAX-Anfrage gesendet wurde! Nach dem Aufruf von $.ajax
haben Sie eine window.location = "AddtoDatabase.php";
-Anweisung in Ihrem Code. Wenn Sie möchten, dass der Client nach dem Ajax-Aufruf umgeleitet wird, müssen Sie diesen Ausdruck in Ihre success
-Rückruffunktion (die, in der ich den response
logge) im zweiten Ausschnitt ^^.
Wenn Sie all dies geändert haben, sollte Ihre $_POST
Variable richtig aussehen. Wenn nicht, drucken Sie das Objekt $_REQUEST
aus und sehen Sie, was die Antwort eines Ajax-Aufrufs dann ist.
Schließlich bitte beachten Sie, dass die Verwendung einer API, die vorbereitete Anweisungen unterstützt (und Sie so vor meisten Injektionsattacken schützt), nicht bedeutet, dass das Kontrollkästchen POST / GET Daten in eine Abfrage ist sicherer als es früher war ...
Fazit: Wenn Sie eine API verwenden, die kritische Sicherheitsfunktionen wie vorbereitete Anweisungen unterstützt, verwenden Sie diese Funktionen .
Um ganz klar und vollständig zu sein, hier ist auch eine etwas überarbeitete Version des PHP-Codes:
%Vor%Überprüfen Sie die Dokumente, um das prozedurale Gegenstück aller Methoden zu sehen, die ich von hier aus verwenden werde, wenn Sie möchten. Ich bevorzuge die OOP-API
%Vor%Nützliche Links zu vorbereiteten Aussagen:
mysqli::prepare
doc-Seite mysqli_stmt::bind_result
doc-Seite ist von unschätzbarem Wert, wenn es um das Abrufen von Daten geht ... PDO
tutorial auch
Tags und Links javascript arrays php posting