[/code]ajax_php.php
[PHP]<?php
$text = $_POST['text'];
echo $text;
php?>[/PHP]Warum funktioniert das nicht? Ich bin am verzweifeln =(
Kann mir jemand helfen?
Danke schonmal =)
Sorry aber ich blick bei deinem Code nicht ganz durch.
Scheint mir so als hättest du irgendwo irgendwelche Reihenfolgen der Abläufe verwechselt und vertauscht.
[PHP]
Meine ersten Ajax Erfahrungen
<!–
function getAjaxHandler() {
var xmlHttp = false
try {
xmlHttp = new ActiveXObject(„Msxml2.XMLHTTP“)
}
catch(e) {
try {
xmlHttp = new ActiveXObject(„Microsoft.XMLHTTP“)
}
catch(e) {
xmlHttp = false
}
}
if (!xmlHttp && typeof XMLHttpRequest != ‚undefined‘) {
xmlHttp = new XMLHttpRequest()
}
xmlHttp.overrideMimeType(‚text/xml‘)
xmlHttp.setRequestHeader(‚Content-Type‘, ‚application/x-www-form-urlencoded‘)
return xmlHttp
}
mhhh… ich weiß nicht http://juklei.de/a/fehler.bmp
Irgendwie seh ich bei AJAX noch nicht so durch^^
Jaaaa… ich weiß IE ist scheiße, aber ich hab gerade keinen anderen hier^^
Fehler: uncaught exception: [Exception… "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.setRequestHeader]" nsresult: „0x80004005 (NS_ERROR_FAILURE)“ location: „JS frame :: Meine ersten Ajax Erfahrungen :: getAjaxHandler :: line 23“ data: no]
ich schau mal ob ich den Fehler finde.
EDIT
Habs gefunden
xmlHttp.setRequestHeader(‚Content-Type‘, ‚application/x-www-form-urlencoded‘)
Die zeile stört (weiß eh nicht warum du die benutzt)
Nimm einfach
xmlHttp.setRequestHeader(‚Content-Type‘, ‚application/x-www-form-urlencoded‘)
und
xmlHttp.overrideMimeType(‚text/xml‘)
auch am besten gleich mit raus aus dem Script (einfach löschen)
Ich habe mal noch was verändert. Jetzt hängt zusätzlich ein wahlloser GET-Parameter dran. Ich kanns leider zur Zeit nicht selber testen, hab aber grad im Internet gelesen, dass das manchmal das Problem mit dem POST bei Ajax beheben soll. Einfach mal ausprobieren.
Schreibe diesen Zeilen zuästzlich in die PHP Datei.
[php]
header(‚Content-Type: text/html; charset=utf-8‘); // sorgt für die korrekte Kodierung
header(‚Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0‘); // ist mal wieder wichtig wegen IE
[/php]
[/code][Link zu der ganzen Aktion=)](http://www.juklei.de/a/ajax.php)
Nur so als Hintergrundinfo: Eigentlich will ich mal versuchen nen Kotaktformular über AJAX realisieren. Und deshalb hab ich mal versucht etwas einfacherer an zu fangen… Istr natürlich schon deprimierend wenn das nicht geht…^^
Ich hab schon hinbekommen Daten auszulesen, aber ich will ja bei nem Kontaktformular Daten senden… Das bringt mir da nicht viel… Naja, und deshalb dieser Versuch.
Haste mal deine Post Daten in der PHP Datei mit urlencode geparst? Bin jetzt nicht sicher ob das sein, muss.
Versuche es so: Du schickst die Daten per Ajax POST Request. Und holst die Daten wieder mit einem erneuten Request wahlweise POST/GET. Und machst per getElementById().innerHTML die geholten Daten in ein Div. Dann muss er funktionieren. Wenn du per PHP das gesendete Ausgibst wird es im Frontend nicht angezeigt. Diese Ausgabe holst du dir per [class].responseText oder per [class].responseXML
Also in Javascript schreibst du eine Funktion bsp.: SendData zum senden der eingebenen Daten und für das Holen der daten bsp.: RecieveData zum einfügen in dein DIV element.
Also jetzt hab ich zwei Probleme:
Erstens ich verstehe deine Variante nicht ganz… Ich hab erst vor nen paar Tagen angefangen mich Mit JavaScript und AJAX zu beschäftigen und bin deshalb noch nicht so gut was diese Sachen angeht.
Zweitens: Selbst wenn ichs ganz verstehen würde wäre ich nicht in der Lage das in Code um zu setzten… Okay, dann probier ich erstmal was einfacheres… Ich dachte eigentlich es könnte nicht so schwer sein mit AJAX ein ‚POST-Request‘ zu schicken und die Antwort der PHP Datei in einem Div aus zu geben. Das klang so einach. Ich dachte das könnte nicht so schwer sein^^ Da hab ich mich wohl geirrt. =(
Also die eigentliche Aufgabenstellung die ich lösen möchte ist:
Vielleicht bin ich auf einem ganz falschen Pfad?
Das kann doch wohl nicht so kompliziert sein… =(