5.1k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von uesch Mitglied (135 Punkte)
Hallo allerseits,

ich habe ein kleines Problem mit Ajax und PHP. Und zwar möchte ich, dass nach Ändern eines Auswahlfelds sich das andere Auswahlfeld ändert. Das ist erstmal kein Problem. Das Problem ist jedoch wie ich auf der Hauptseite das Auswahlfeld in eine Datenbank eintragen kann. Denn wenn ich einfach den Variablennamen angebe, ist die Datenbank leer.

Hier das Script:

<script type="text/javascript" language="javascript">

var http_request = false;

function makeRequest(url, parameters) {

http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();

} 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('HTTP Instanz konnte nicht erstellt werden.');
return false;
}
http_request.onreadystatechange = htmlContents;
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 get(obj){
var poststr = "txt=" + encodeURI(document.getElementById("search").value );
makeRequest('ajaxing.php', poststr);
}

function htmlContents() {

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

}
</script>


So und das PHP-Script:


$stadt = array("Berlin", "München", "Köln");
foreach ($stadt as $meine) { echo "<option value=\"$meine\">$meine</option>"; }


So und das ganze wird jetzt in der Hauptseite per
<span name="myspan" id="myspan"></span>
angezeigt.

Wenn ich nun das <span name...> innerhalb des Formulars auf der HTML-Seite einfüge, dann wird es zwar angezeigt, aber beim Absenden des Formulars wird die Variable $stadt nicht erkannt.
Muss ich in der AJAX-Datei die $stadt separat übertragen?

Ich hoffe, irgendjemand hat das Problem verstanden.

Vielen Dank,

Üsch

16 Antworten

0 Punkte
Beantwortet von katy Mitglied (787 Punkte)
Hallo Uesch,

schau dir dies an: AJAX und JSON

katy
0 Punkte
Beantwortet von uesch Mitglied (135 Punkte)
Ist das wirklich der "normale" Weg, um eine Variable im Formular verfügbar zu machen?

Gibt es nicht etwas leichteres? Weil da muss ich mich ja richtig in neue Materie einlesen, soweit ich das gerade gelesen habe. Mit Javascript habe ichs leider eh nicht so.
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Vielleicht willst Du auch mal hier einen Blick reinwerfen: www.xajax.de/
0 Punkte
Beantwortet von katy Mitglied (787 Punkte)
Hallo Uesch,

es ist dies der normale Weg bei derartigen Problemstellungen, wie du sie wohl hast.

Allerdings würde ich von der Implementierung von AJAX ohne profunde JavaScript-Kenntnisse deuitlich abraten.

katy
0 Punkte
Beantwortet von uesch Mitglied (135 Punkte)
So, ich habe es hinbekommen.

Für alle, die das gleiche Problem haben: Es lag an dem <doctype>. Ich hatte
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
geschrieben. Sobald ich es durch
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
ersetzte, hat es wunderbar funktioniert.
Ich kann zwar nicht erklären, warum, aber immerhin geht es jetzt.

Vielen Dank nochmal an alle!
0 Punkte
Beantwortet von son_quatsch Experte (5.3k Punkte)
Shotgun-Debugging nennt man sowas
...