• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

AJAX Daten per POST senden

Status
Für weitere Antworten geschlossen.

jukleidie

Mitglied
ajax.php
Code:
 <html>
    <head>
        <title>Meine ersten Ajax Erfahrungen</title>
        <script type="text/javascript">

             function doIt(){

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
}

http_request = new XMLHttpRequest();
http_request.overrideMimeType('text/xml');
http_request.onreadystatechange = function(){

http_request.open('POST', 'http://www.juklei.de/a/ajax_php.php', true);
alert(http_request.responseText);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http_request.send('text=hallo');
};
           }
        </script>
    </head>
    <body>
        <div id="eins" style="width: 80%; height: 80%; border: dashed 1px;">
            Datensatz eintragen: <input type="text" id="text"/><input type="button" onclick="doIt();" value="Do it!" />
        </div>
    </body>
</html>
ajax_php.php
PHP:
<?php
$text = $_POST['text'];
echo $text;
php?>
Warum funktioniert das nicht? Ich bin am verzweifeln =(
Kann mir jemand helfen?
Danke schonmal =)
 
Zuletzt bearbeitet:
Werbung:
Es gibt bei <input> Kein Attribut ID, es lautet NAME. D.h., das es $_POST['text'] nicht existiert.

Außerdem würde ich dir noch raten bei State Abfrage, noch eine kleine Fehlerüberprüfung einbauen. Wenn der State nicht 4 ist, wird nichts passieren.
 
Werbung:
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:
<html>
	<head>
		<title>Meine ersten Ajax Erfahrungen</title>
		<script type="text/javascript">
		<!--
		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
		}
		
		function sendRequest(element_id) {
			xmlHttp = getAjaxHandler()
			content = document.getElementById(element_id).value
			param = "text="+encodeURIComponent(content)
			if(xmlHttp) {
				xmlHttp.open('POST', 'ajax_php.php', true)
				xmlHttp.onreadystatechange = handleAnswere(xmlHttp)
				xmlHttp.send(param)
			}
		}
		function handleAnswere(xmlHttp) {
			if (xmlHttp.readyState == 4) {
				alert(xmlHttp.responseText)
			}
		}
		-->
		</script>
	</head>
    <body>
        <div id="eins" style="width: 80%; height: 80%; border: dashed 1px;">
            Datensatz eintragen: 
            <input type="text" id="text" />
            <input type="button" onclick="sendRequest('text');" value="Do it!" />
        </div>
    </body>
</html>
 
mhhh... ich weiß nicht
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^^
 
hmpf....
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)
 
Werbung:
hmpf....

ich schau mal ob ich den Fehler finde.
Danke =) *mindestlänge*
EDIT: Siehst du diesen fehler im FF oder bei welchem Browser?

EDIT2:
PHP:
<html>
    <head>
        <title>Meine ersten Ajax Erfahrungen</title>
        <script type="text/javascript">
        <!--
        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()
            }
                       return xmlHttp
        }
 
        function sendRequest(element_id) {
            xmlHttp = getAjaxHandler()
            content = document.getElementById(element_id).value
            param = "text="+encodeURIComponent(content)
            if(xmlHttp) {
                xmlHttp.open('POST', 'ajax_php.php', true)
                xmlHttp.onreadystatechange = handleAnswere(xmlHttp)
                xmlHttp.send(param)
            }
        }
        function handleAnswere(xmlHttp) {
            if (xmlHttp.readyState == 4) {
                alert(xmlHttp.responseText)
            }
        }
        -->
        </script>
    </head>
    <body>
        <div id="eins" style="width: 80%; height: 80%; border: dashed 1px;">
            Datensatz eintragen: 
            <input type="text" id="text" />
            <input type="button" onclick="sendRequest('text');" value="Do it!" />
        </div>
    </body>
</html>
Das ist der aktuelle code, aber das geht irgendwie nicht... Ist mir ein Rätsel.. wenn ich der Browser wäre würde ich wissen was ich machen soll^^ =)
 
Zuletzt bearbeitet:
Code:
<html>
    <head>
        <title>Meine ersten Ajax Erfahrungen</title>
        <script type="text/javascript">
        <!--
        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
        }
        
        function sendRequest(element_id) {
            xmlHttp = getAjaxHandler()
            content = document.getElementById(element_id).value
            param = "text="+encodeURIComponent(content)
            if(xmlHttp) {
                xmlHttp.open('POST', 'ajax_php.php?n98se4', true)
                xmlHttp.onreadystatechange = handleAnswere(xmlHttp)
                xmlHttp.send(param)
            }
        }
        function handleAnswere(xmlHttp) {
            if (xmlHttp.readyState == 4) {
                alert(xmlHttp.responseText)
            }
        }
        -->
        </script>
    </head>
    <body>
        <div id="eins" style="width: 80%; height: 80%; border: dashed 1px;">
            Datensatz eintragen:
            <input type="text" id="text" />
            <input type="button" onclick="sendRequest('text');" value="Do it!" />
        </div>
    </body>
</html>

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
 
Werbung:
und wenn ers immer noch net macht, dann solltest du uns vllt mal die PHP datei zeigen ^^
 
und wenn ers immer noch net macht, dann solltest du uns vllt mal die PHP datei zeigen ^^
Die php datei steht hier =)

egal:
ajax_php.php
PHP:
<?php
header('Content-Type: text/html; charset=utf-8'); 
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0'); 
$text = $_POST['text'];
echo $text;
?>
ajax.php
Code:
<html>
    <head>
        <title>Meine ersten Ajax Erfahrungen</title>
        <script type="text/javascript">
        <!--
        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
        }

        function sendRequest(element_id) {
            xmlHttp = getAjaxHandler()
            content = document.getElementById(element_id).value
            param = "text="+encodeURIComponent(content)
            if(xmlHttp) {
                xmlHttp.open('POST', 'ajax_php.php?n98se4', true)
                xmlHttp.onreadystatechange = handleAnswere(xmlHttp)
                xmlHttp.send(param)
            }
        }
        function handleAnswere(xmlHttp) {
            if (xmlHttp.readyState == 4) {
                alert(xmlHttp.responseText)
            }
        }
        -->
        </script>
    </head>
    <body>
        <div id="eins" style="width: 80%; height: 80%; border: dashed 1px;">
            Datensatz eintragen:
            <input type="text" id="text" />
            <input type="button" onclick="sendRequest('text');" value="Do it!" />
        </div>
    </body>
</html>
Link zu der ganzen Aktion=)


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.
 
Zuletzt bearbeitet:
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.
 
Zuletzt bearbeitet:
Werbung:
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:
Anonymer Aufgabensteller schrieb:
Erstelle einen Code (Grundlage: AJAX) der einen Text an eine PHP Datei schickt und der das was die PHP Datei zurück gibt (in diesem Fall der gesendete Text) in einem div ausgibt. Das ganze soll auf Knopfdruck passieren.
Vielleicht bin ich auf einem ganz falschen Pfad?
Das kann doch wohl nicht so kompliziert sein... =(
 
Genau das was ich geschrieben habe ist die Lösung der Aufgabenstellung.

Ich poste hiermal jetzt eine Lösung(Nicht getestet):
PHP:
<?php
header('Content-Type: text/html; charset=utf-8'); 
header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0'); 
$text = $_POST['text'];
echo $text;
?>

Code:
<html>
    <head>
        <title>Meine ersten Ajax Erfahrungen</title>
        <script type="text/javascript">
        <!--
        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();
            }
            return xmlHttp;
        }
        function sendRequest(element_id) {
            xmlHttp = getAjaxHandler();
            content = document.getElementById(element_id).value;
            param = "text="+encodeURIComponent(content);
            if(xmlHttp) {
                xmlHttp.open('POST', 'ajax_php.php, true);
                xmlHttp.send(param);
            }
        }
        function recieveRequest()
        {
           xmlHttp = getAjaxHandler();
           xmlHttp.open("GET", "ajax_php.php", true);
           xmlhttp.send(null);
           if(xmlHttp.State == 4)
           {
              document.getElementById('eins').innerHTML += xmlhttp.responseText;
            }
         }
         setTimeout("recieveRequest()", 5);
      -->
        </script>
    </head>
    <body onLoad="recieveRequest()">
        <div id="eins" style="width: 80%; height: 80%; border: dashed 1px;">
            Datensatz eintragen:
            <input type="text" id="text" />
            <input type="button" onclick="sendRequest('text');" value="Do it!" />
        </div>
    </body>
</html>

Gewöhnt euch mal an, Semikolons zu setzen!

Edit:
Kodierung aus Javascript rausgenommen? Wer hat sich sowas einfallen lassen? Das macht die PHP Datei.
 
Zuletzt bearbeitet:
Werbung:
was ist das eigentlich alles fürn komischer code? ^^

Code:
{
xmlHttp definieren
    { funktion zum bilden des xml objektes
        hier wird auch auf onreadystatechange dex xml objektes eingegangen!
    }

    { funktion zum senden vonanfragen (wert = false)

    }

    { funktion zum empfangen von ergebnissen, die in der ersten funktion bereits gebraucht wurde

    }

setTimeout("funktion zum senden vonanfragen (ohne wert nur zum abfragen ;) )", 500);
}

<a href="javascript: funktion zum senden vonanfragen (wert = document.getElementById("text").value); return false;">Senden</a>

so ungefähr würde ichs machen ^^
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben