Javascript "Objekt erforderlich"
Stephan
- javascript
Hey Leute,
Ich habe bereits gesucht wie eindoofer aber ich finde den Fehler nicht.
Hier mal der Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ajaxtest</title>
<script language="javascript" type="text/javascript">
var url = "getDetails.php?auswahl="; // The server-side script
var http = getHTTPObject(); // We create the HTTP Object
var isWorking = false;
// *********************************************
function handleHttpResponse() {
if (http.readyState == 4) {
if (http.responseText.indexOf('invalid') == -1) {
var xmlDocument = http.responseXML;
var i=0;
var wert;
do
{
wert=xmlDocument.getElementsByTagName('bezeichnung').item(i).firstChild.data;
// Element in die Liste einfügen!
addSelectOption(document.getElementById("level2"),wert);
i++;
}while(xmlDocument.getElementsByTagName('bezeichnung').item(i-1).firstChild.data!="");
isWorking = false;
}
}
}
// *********************************************
function addSelectOption(selectionElement, text)
{
var option = document.createElement("OPTION");
var Text = document.createTextNode(text);
option.appendChild(Text);
selectionElement.appendChild(option)
}
// *********************************************
function getDataLevel1() {
if (!isWorking && http) {
var auswahl = document.getElementById("level1").value;
http.open("GET", url + escape(auswahl), true);
http.onreadystatechange = handleHttpResponse;
isWorking = true;
http.send(null);
document.getElementById('level2').visibile = false;
}
}
// **********************************************
function getHTTPObject() {
var xmlhttp;
/*@cc_on
@if (@_jscript_version >= 5)
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
try {
xmlhttp = new XMLHttpRequest();
xmlhttp.overrideMimeType("text/xml");
} catch (e) {
xmlhttp = false;
}
}
return xmlhttp;
}
</script>
</head>
<body>
<form action="post" name="test">
<table>
<tr><td>Level1:</td><td>
<select name="level1" id="level1" size=1 onblur=getDataLevel1()>
<?PHP
function db_connect() {
$database_name = XXX;
$database_username = XXX;
$database_password = XXX;
$result = mysql_pconnect('localhost',$database_username, $database_password);
if (!$result) return false;
if (!mysql_select_db($database_name)) return false;
return $result;
}
// **********************************************
$conn = db_connect();
if ($conn) {
$query = "select bezeichnung from level1";
$result = mysql_query($query,$conn);
while($daten=mysql_fetch_object($result))
{
echo "<option value=".$daten->bezeichnung.">".$daten->bezeichnung."</option>";
}
}
?>
</select>
</td></tr>
<tr><td>Level2:</td><td>
<select name="level2" id=level2 size="1" style="visible:false">
</select>
</td></tr>
</table>
</form>
</body>
</html>
Der dumme IE sag nun, dass der Fehler in Zeile 18 sei. das ist diese:
wert=xmlDocument.getElementsByTagName('bezeichnung').item(i).firstChild.data;
Aber wie gesagt, ich finde den Fehler nicht.
Danke schon einmal für eure Hilfe.
MFG
Stephan
hi,
Der dumme IE sag nun, dass der Fehler in Zeile 18 sei. das ist diese:
wert=xmlDocument.getElementsByTagName('bezeichnung').item(i).firstChild.data;
Wenn ich das richtig in Erinnerung habe, möchte der IE, dass du auf das documentElement des in responseXML stehenden XML-Dokumentes zugreifst - und _darauf_ dann die Methode aufrufst.
gruß,
wahsaga
Mach ich doch!
3 oder 4 Reihen vorher!
Oder was meinst du?
Stephan
hi,
Mach ich doch!
3 oder 4 Reihen vorher!
Nein, machst du nicht.
Oder was meinst du?
Das du die Methode nicht auf dem von responseXML gelieferten Objekt, sondern auf dessen documentElement aufrufen sollst.
Falls es daran nicht liegt - dann debugge.
gruß,
wahsaga
Daran lag es nicht,
ich kann auch leider nicht debuggen, da das Skript ausgeführt wird. der mekert erst das da ein Fehler ist, wenn er das Skript bereits einmal durchlaufen hat.
Dann führt er es aber kein 2. Mal mehr aus.
MFG
Stephan
Hi,
ich kann auch leider nicht debuggen, da das Skript ausgeführt wird.
Du kannst nur dann debuggen, _wenn_ das Script ausgeführt wird.
Dann führt er es aber kein 2. Mal mehr aus.
Dagegen gibt es eine magische Taste: F5.
Cheatah