POST Variable kommt nicht an (Javascript/Ajax)
Frieder1313
- javascript
0 Frieder13130 Frieder1313
0 dedlfix0 Struppi
Hi zusammen,
ich habe ein Problem, das mich grad zur Weißglut bringt..
Ich führe innerhalb meiner Seite ein kleines PHP Script aus (Aufruf per Ajax). Dabei übermittel ich per POST eine Variable an das Script:
...
if (!request) {
alert("Kann keine XMLHTTP-Instanz erzeugen");
return false;
} else {
var url = cfile;
// Request öffnen
request.open('POST', url, true);
// Request senden
var params = "abcdefg";
//var coords = document.getElementById("txt").value ;
request.send('xy='+params);
// Request auswerten
request.onreadystatechange = interpretRequest;
}
...
Der Code läuft auch super durch. Ich gehe also davon aus, dass programmiertechnisch zumindest nichts komplett falsch sein kann.
Wie ihr seht, sollte die Variable "xy" mit dem Wert "params", also "abcdefg" an das Script unter "url" versendet werden.
Inhalt der Zieldatei:
...
<?
echo $_POST[xy]; ?>
...
Leider kommt die Variable aber scheinbar nicht an, sprich: es wird nichts ausgegeben? Woran kanns liegen?
Danke vorab!
Grüße,
Freddy
Sorry, der Code der PHP-Datei lautet:
<?
echo $_POST["xy"]; ?> // als mit Anführungszeichen. Daran kanns also nicht liegen..
ähm jo, dachte eigentlich das das klar sei:
ich rufe per POST eben das script, nennen wir es mal insert_poi.php auf und schreibe dessen Inhalt an eine bestimmte Stelle in meinem Dokument. Genauer gesagt in ein DIV.
Der Inhalt dieser Datei insert_poi.php wird auch an entsprechender Stelle angezeigt. Fehlermeldungen gibt es keine. Warum auch? Das Script läuft ja durch.
Dass PHP mit Javascript-Variablen, oder eben mit seinen Werten nichts anfangen kann ist eh klar, da verschiedene Schichten. Aber ich greife mit PHP ja auch in keinster Weise auf diese zu. Ich generiere doch einen Request an das PHP Script, und übergebe die Werte per POST mitsamt diesem Request an die insert_poi.php -> request.send('xy='+params).
diese rufe ich ja dann im weiteren Script mit $_POST["xy"] wieder ab - aber doch net direkt aus Javascript. Weiss an dieser Stelle halt nicht wie du darauf kommst..
Aber ich wäre euch / dir schon sehr verbunden, wenn mir jemand sagen könnte ob in dem beschriebenen Script grundsätzlich irgendwas falsch ist bzw ob ich da was falsch verstanden habe...
Sorry, der Code der PHP-Datei lautet:
<?
echo $_POST["xy"]; ?> // als mit Anführungszeichen. Daran kanns also nicht liegen..
Hi!
ähm jo, dachte eigentlich das das klar sei:
Ähm nee, so klar ist das nicht, weil du beliebig viele Fehler eingebaut haben kannst, die du vielleicht nicht siehst und wie auf alle Fälle nicht hellsehen können. Deswegen ist es von deiner Seite wichtig, nachvollziehbar zu beschreiben und von uns aus nicht besonders sinnvoll, von irgendwelchen Annahmen auszugehen.
ich rufe per POST eben das script, nennen wir es mal insert_poi.php auf und schreibe dessen Inhalt an eine bestimmte Stelle in meinem Dokument. Genauer gesagt in ein DIV.
Hier fehlen schon wieder Zwischenschritte. Das Script erzeugt also irgendeine Ausgabe, die du dann in der Callback-Methode des XHR-Objekts irgendwie in den DOM-Baum bringst. An welcher Stelle genau und vor allem wie hast du festgestellt, dass die Daten nicht mehr vorhanden sind? Und nimmst du den richtigen readyState, so dass überhaupt Daten vorhanden sein können?
Fehlermeldungen gibt es keine. Warum auch? Das Script läuft ja durch.
Welches Script meinst du, das PHP-Script oder das Javascript-Script? PHP-Scripte laufen auch bei kleineren Fehlern bis mittleren Katastrophen durch. Meldungen können unterdrückt sein, beispielsweise standardmäßig die Notice-Meldungen, die beim Zugriff auf nicht vorhandene Werte ausgegeben werden. Das lässt sich mit einem auf E_ALL gestellten error_reporting ändern.
Dass PHP mit Javascript-Variablen, oder eben mit seinen Werten nichts anfangen kann ist eh klar, da verschiedene Schichten. Aber ich greife mit PHP ja auch in keinster Weise auf diese zu. [...] Weiss an dieser Stelle halt nicht wie du darauf kommst..
Du redest von Variablen, meinst aber nur deren Inhalt - die Werte. Das ist ein kleiner aber feiner Unterschied. In dem Fall aber nicht weiter gravierend, denn man versteht auch bei der nicht richtigen Begriffsverwendung, was du meinst.
Aber ich wäre euch / dir schon sehr verbunden, wenn mir jemand sagen könnte ob in dem beschriebenen Script grundsätzlich irgendwas falsch ist bzw ob ich da was falsch verstanden habe...
Den von Struppi geäußerten Verdacht, dass du GET verwendest, kann ich nicht nachvollziehen. Du zeigst nicht, wie dein Callback aussieht. Der Fehler könnte sein, dass du den readyState nicht angemessen beachtest. Das ist aber nur ein Gedanke und andere Ursachen sind auch möglich.
Lo!
Jo wie gesagt. Danke euch, jetzt geht's ja ;)
Den von Struppi geäußerten Verdacht, ...
Stimmt das war falsch.
Struppi.
Hi!
[ein Ajax-Request]
Leider kommt die Variable aber scheinbar nicht an, sprich: es wird nichts ausgegeben? Woran kanns liegen?
Erstens werden keine Variablen übertragen sondern nur ihre Werte. Mit einer JS-Variable kann PHP nichts anfangen, Werte können hingegen zwischen beliebigen Systemen ausgetauscht werden. Zweitens - wo erwartest du denn eine Ausgabe? Und welche Maßnahmen hast du ergriffen, um das "scheinbar" aus deiner Aussage zu entfernen - sprich: dir Klarheit zu verschaffen, was wirklich ist? Gibt es Hinweise in Form von Fehlermeldungen? Sind die Error-Level ausreichend hoch eingestellt, so dass Meldungen ausgegeben werden?
Lo!
Ich führe innerhalb meiner Seite ein kleines PHP Script aus (Aufruf per Ajax). Dabei übermittel ich per POST eine Variable an das Script:
Nein, tust du nicht. Du übermittelst den Wert per GET und vergißt darüber hinaus die Konvertierung in einen URL lesbaren Wert.
Wie ihr seht, sollte die Variable "xy" mit dem Wert "params", also "abcdefg" an das Script unter "url" versendet werden.
Nein, das sehen wir nicht. Du sendest einen Wert per GET Parameter.
Struppi.
ok ich bedank mich mal an der Stelle. Ich hatte die folgende Zeile:
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
zwar drin, jedoch sinnloser weise, nachdem mein request.send schon ausgeführt wurde. Demnach funktioniert es jetzt..
Ich führe innerhalb meiner Seite ein kleines PHP Script aus (Aufruf per Ajax). Dabei übermittel ich per POST eine Variable an das Script:
Nein, tust du nicht. Du übermittelst den Wert per GET und vergißt darüber hinaus die Konvertierung in einen URL lesbaren Wert.
Wie ihr seht, sollte die Variable "xy" mit dem Wert "params", also "abcdefg" an das Script unter "url" versendet werden.
Nein, das sehen wir nicht. Du sendest einen Wert per GET Parameter.
Struppi.