Array mit PHP in ajax schreiben

8

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?

    
EzAnalyst 16.04.2013, 16:05
quelle

2 Antworten

20

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 ^^.

einfügen

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:

Elias Van Ootegem 16.04.2013, 16:15
quelle
0

Sie sollten serialisieren verwenden. dann ......

%Vor%

als in php Daten mit post

nehmen %Vor%

und Anzeige mit Json-Codierung. Auf diese Weise können Sie Fehler anzeigen

%Vor%     
Erdem Ece 16.04.2013 16:19
quelle

Tags und Links