Opera macht Probleme bei AJAX
wucher wichtel
- javascript
Hallo!
Ich habe ein Problem mit Opera. Aus irgendeinem Grund funktioniert der Request nicht. Könnt ihr mir sagen wieso?
Hier mal der Quelltext:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rel="STYLESHEET" type="text/css" href="css/css.css">
<script type="text/javascript" src="scripts.js"></script>
</head>
<body>
<a href="#" onclick="makeRequest('test.php');return false">test</a>
</body>
</html>
Hier das JavaScript:
var http_request = false;
function makeRequest(url) {
http_request = false;
if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
return false;
}
http_request.onreadystatechange = callFunc;
http_request.open('POST', url, true);
http_request.send(null);
}
function callFunc() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
writeContent();
} else {
alert('Bei dem Request ist ein Problem aufgetreten.');
}
}
}
function writeContent() {
alert(http_request.responseText);
}
Und das kleine PHP-Script (wobei letzteres eigentlich Daten aus einer Datenbank holt):
<?php
echo "Hallo!";
?>
Der HTML und der PHP-Quelltext wurden stark vereinfacht. Beim PHP-Script ist es schließlich egal, woher es die Daten hat, die per echo ausgegeben werden. Der Fehler müsste doch im JavaScript liegen. Aber wo?
Danke schön für eure Hilfe!
ciao, ww
Hallo!
Ich hab's jetzt noch ein bisschen ausführlicher getestet. Bei Firefox 2.0 und Internet Explorer 6.0 funktioniert es einwandfrei. Opera 8.52 und Netscape 7.1 machen einfach gar nichts. Auch in der JavaScript-Konsole von beiden wird nichts angezeigt.
ciao, ww
hi,
Ich habe ein Problem mit Opera. Aus irgendeinem Grund funktioniert der Request nicht. Könnt ihr mir sagen wieso?
Opera 9 macht keine Probleme, im Opera 8 kann ich's allerdings nachvollziehen.
Meldungen in der Konsole komischerweise wirklich keine.
http_request.send(null);
Das mag er wohl nicht - ein wenig Herumtesten ergab, dass damit der readyState auf 1 stehen bleibt. 1 bedeutet "loading" - aber ohne Daten zum Senden bleibt's dann wohl auch bei diesem Zustand.
Sobald ich hier als Parameter bei send() einen Leerstring einsetze, funktioniert es auch mit dem Opera 8.
Ganz ohne Parameter funktioniert wiederum nicht.
gruß,
wahsaga
Hallo!
Sobald ich hier als Parameter bei send() einen Leerstring einsetze, funktioniert es auch mit dem Opera 8.
Ganz ohne Parameter funktioniert wiederum nicht.
Vielen Dank für deine Bemühungen und das Testen. Danke schön!
ciao, ww
Hallo!
Ich hab's mir nochmal mit Netscape 7.1 angeschaut. Da funktioniert es immer noch nicht. Allerdings funktioniert es im Netscape 8. Aber ich denke, dass man den 7er Netscape vernachlässigen kann, oder?
ciao, ww
Tach wucher wichtel,
http_request.open('POST', url, true);
http_request.send(null);
Bei der Methode POST erwartet die send()-Methode auch entsprechende Daten, null wäre bei GET zu verwenden. Insofern sollte in diesem Fall wohl wenigstens ein Leerstring "" bei send() angegeben werden (siehe Test von wahsaga) oder eben GET.
Möglicherweise verhalten sich da neuere Browser etwas toleranter ...
Man liest sich,
svg4you
Hallo!
Bei der Methode POST erwartet die send()-Methode auch entsprechende Daten, null wäre bei GET zu verwenden. Insofern sollte in diesem Fall wohl wenigstens ein Leerstring "" bei send() angegeben werden (siehe Test von wahsaga) oder eben GET.
Danke schön!
ciao, ww