ajax problem

Kategorien: HTML, JavaScript, CSS, ...
11 Antworten
rompers
rompers am Mittwoch, 25. April 2007 um 14:19
hallo ! schreibe gerade eine script. das soll mit axaj laufen nun ist aber das broblem das wenn ich einen davon echo '<form method="post" action="javascript:get(document.getElementById(\\'myform\\'));" name="myform" id="myform" style="display:inline"> <div style="display:inline;"> <input style="border:none;background-color:transparent;" type="image" src="images/letters/letter_A.gif" name="qn" id="qn" value="A" onclick="javascript:get(this.parentNode);" /> <input type="hidden" name="qt" id="qt" value="'.$teserre.'" /> <input type="hidden" name="qg" id="qg" value="A" /> <input type="hidden" name="qv" id="qv" value="'.$teserre.'" /> </div> </form>'; dann klappt es aber habe ich dann noch einen drin das es so aussieht echo '<form method="post" action="javascript:get(document.getElementById(\\'myform\\'));" name="myform" id="myform" style="display:inline"> <div style="display:inline;"> <input style="border:none;background-color:transparent;" type="image" src="images/letters/letter_A.gif" name="qn" id="qn" value="A" onclick="javascript:get(this.parentNode);" /> <input type="hidden" name="qt" id="qt" value="'.$teserre.'" /> <input type="hidden" name="qg" id="qg" value="A" /> <input type="hidden" name="qv" id="qv" value="'.$teserre.'" /> </div> </form><form method="post" action="javascript:get(document.getElementById(\\'myform\\'));" name="myform" id="myform" style="display:inline"> <div style="display:inline;"> <input style="border:none;background-color:transparent;" type="image" src="images/letters/letter_B.gif" name="qn" id="qn" value="B" onclick="javascript:get(this.parentNode);" /> <input type="hidden" name="qt" id="qt" value="'.$teserre.'" /> <input type="hidden" name="qg" id="qg" value="B" /> <input type="hidden" name="qv" id="qv" value="'.$teserre.'" /> </div> </form>'; geht es nicht mehr hier das ganze zusammen $teserre = time(); if($action == "ajaxpost") { $teserre = time(); echo '<script type="text/javascript" language="javascript"> var http_request = false; function makePOSTRequest(url, parameters) { http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { // set type accordingly to anticipated content type //http_request.overrideMimeType(\\'text/xml\\'); http_request.overrideMimeType(\\'text/html\\'); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert(\\'Cannot create XMLHTTP instance\\'); return false; } http_request.onreadystatechange = alertContents; http_request.open(\\'POST\\', url, true); http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); http_request.setRequestHeader("Content-length", parameters.length); http_request.setRequestHeader("Connection", "close"); http_request.send(parameters); } function alertContents() { if (http_request.readyState == 4) { if (http_request.status == 200) { //alert(http_request.responseText); result = http_request.responseText; document.getElementById(\\'myspan\\').innerHTML = result; } else { alert(\\'There was a problem with the request.\\'); } } } function get(obj) { var poststr = "qn=" + encodeURI(document.getElementById("qn").value) + "&qt=" + encodeURI(document.getElementById("qt").value) + "&qg=" + encodeURI(document.getElementById("qg").value) + "&qn=" + encodeURI(document.getElementById("qn").value) + "&qv=" + encodeURI(document.getElementById("qv").value); makePOSTRequest(\\'meinedatei.php?action=ajaxpost\\', poststr); } </script> <form method="post" action="javascript:get(document.getElementById(\\'myform\\'));" name="myform" id="myform" style="display:inline"> <div style="display:inline;"> <input style="border:none;background-color:transparent;" type="image" src="images/letters/letter_A.gif" name="qn" id="qn" value="A" onclick="javascript:get(this.parentNode);" /> <input type="hidden" name="qt" id="qt" value="'.$teserre.'" /> <input type="hidden" name="qg" id="qg" value="A" /> <input type="hidden" name="qv" id="qv" value="'.$teserre.'" /> </div> </form> <form method="post" action="javascript:get(document.getElementById(\\'myform\\'));" name="myform" id="myform" style="display:inline"> <div style="display:inline;"> <input style="border:none;background-color:transparent;" type="image" src="images/letters/letter_B.gif" name="qn" id="qn" value="B" onclick="javascript:get(this.parentNode);" /> <input type="hidden" name="qt" id="qt" value="'.$teserre.'" /> <input type="hidden" name="qg" id="qg" value="B" /> <input type="hidden" name="qv" id="qv" value="'.$teserre.'" /> </div> </form> <br> '; if(isset($_POST)) { echo '<br><br> Server-Response:<br> <hr> <span name="myspan" id="myspan"></span> <hr>'; print_r($_POST); exit; } } danke für die hilfe mfg rompers ;)

Kommentare

unkie
unkie am Mittwoch, 25. April 2007 um 14:53

IDs sind einzigartig ;) Du hast 2mal die ID "myform" teste es mal mit "myform_a" und 'myform_b' ;) Ist jetzt beim überfliegen meine erste idee. Du nutzt nämlich die Funktion "getElementById();". Hast aber 2mal die gleiche Id! Woher soll denn nun Javascript wissen welche die richtige ist ;) Evtl nimmts immer die erste, evtl auch nicht. Vielleicht ist es auch Browserabhänging ob es dann überhaupt oder gar nicht ausgeführt wird.

Btw: Ich weiß garnicht inwiefern das "name"-attirbut unterstüzt wird, würde jedoch auch von mehrfachverbendung gleicher werte abraten ;) also unter name auch "myform_a" und "myform_b".

rompers
rompers am Mittwoch, 25. April 2007 um 16:05

bringt leider auch nichts ;)

Markus René Einicher
Markus René Einicher am Donnerstag, 26. April 2007 um 12:06

Ich muss mir endlich einen Alert proggen den ich kreig wenn hier jemand was postet ich versäum einfach alles :/

Hat das Forum Rückstriche rausgetan und fehlen die echt in deinem Skript?

rompers
rompers am Donnerstag, 26. April 2007 um 15:02

die hat das forum rausgetan bei mir sind sie drin

Markus René Einicher
Markus René Einicher am Freitag, 27. April 2007 um 15:11

So, ich weiß nit wo du das her hast, aber es is schonmal extrem umständlich.

Ich habs mir zu Hause installiert und gehs jetzt mal durch.

Für das initialisieren einer asynchronen Ajax Verbindung rate ich dir zu folgender, wesentlich übersichtlichen Schnipselei:

var http = false;
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}

rompers
rompers am Freitag, 27. April 2007 um 15:25

dumme frage jetzt wi soll das hin ???

Markus René Einicher
Markus René Einicher am Freitag, 27. April 2007 um 15:35

Also ich würd dein JavaScript so schreiben:
var http = false;

function makePOSTRequest(url, parameters)
{
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
if (!http) {
alert('Cannot create XMLHTTP instance');
} else {
http.open('POST', url, true);
http.onreadystatechange = alertContents;
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http.send(parameters);
}
}

function alertContents()
{
if (http.readyState == 4) {
if (http.status == 200) {
result = http.responseText;
document.getElementById('myspan').innerHTML = result;
} else {
alert('There was a problem with the request.');
}
}
}

function get(obj) {
var poststr = 'qn=' + encodeURI(document.getElementById('qn').value)
+ '&qt=' + encodeURI(document.getElementById('qt').value)
+ '&qg=' + encodeURI(document.getElementById('qg').value)
+ '&qn=' + encodeURI(document.getElementById('qn').value)
+ '&qv=' + encodeURI(document.getElementById('qv').value);
makePOSTRequest('?action=ajaxpost', poststr);
}

Das funktioniert so tadellos. ALlerdings hast du in deiner PHP-Abfrage einen Denkfehler: Du rufst das ganze Skript nämlich mit der Action auf, sodass das, was AJAX dir zurückgibt, nochmal die ganze Seite ist und dann zum Schluss sagst erst if $_POST gesetzt, das wird dann auch ganz brav angefügt ;)

rompers
rompers am Freitag, 27. April 2007 um 15:48

mh i raff das nicht er übergibt mir immer noch nur A wenn ich auf's B klicke :(

Markus René Einicher
Markus René Einicher am Samstag, 28. April 2007 um 21:42

Er übergibt A? Ach du meinst gar nciht dass AJAX fehlschlägt sondern davor schon das JS?

Hm, also ja, er macht egal wohin du klickst das Gleiche. Nur Value des Bildes gibt er nie aus. Was genau solln das Skript tun ... ich hab langsam das Gefühl, dass das Ganze überhaupt einfacher geht ...

unkie
unkie am Sonntag, 29. April 2007 um 11:41

Evtl liegts noch immer an den Ids? Du hast auch bei den Hidden-Inputs gleiche Ids. Er nimmt - denke ich - einfach die erste Id, die er findet. Und die ist immer in myform_a. (Es sei denn, du hast es überall geändert mit den Ids, nicht nur bei den Forms.)

rompers
rompers am Sonntag, 29. April 2007 um 15:26

hab es jetzt mit witchform gelöst und nun geht es danke für eure hilfe :)

mfg rompers