Reputation: 155
I'm learning javascript for a new project. I have seen many tutorials about javascript and xmlhttprequest, but when I try to run decode it won't work. can somebody help me.
here is my html+javascript code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>xml reader</title>
</head>
<body>
<script type="text/javascript">
var xmlhttp;
var xmldoc;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=stateChange();
xmlhttp.open("GET","info.xml",true);
xmlhttp.send(null);
xmldoc = xmlhttp.responceXML.documentElement;
document.write(xmlhttp.getElementsByTagName("vakken")[0].childNodes[0].nodeValue);
</script>
</body>
</html>
here is my xml file:
<?xml version="1.0" encoding="utf-8"?>
<info>
<name>test</name>
<nummber>10</nummber>
</info>
Upvotes: 0
Views: 818
Reputation: 5834
Are you don't receiving an answer in the Request or may it be the case, that you get an answer but it's not written into your dom? Lately I had the problem, that document.write
wouldn't work in one of my pages. I found out, that document.write
is not allowed in XHTML-based pages (My page was XHTML 1.1, yours is XHTML 1.0). So this is just a guess. You could test this with the firebug-extension for firefox. Althought all common browsers respect, that document.write
is not allowed and throw a error-message, IE does however support document.write
in any case...
Upvotes: 1
Reputation: 7305
stateChange()
that you call onreadystatechange
is not defined - add a function named stateChange that will be called once the response returns.
An example of such a function:
function stateChange() {
if(xmlhttp.readyState == 4){
xmldoc = xmlhttp.responseXML.documentElement;
document.write(xmlhttp.getElementsByTagName("vakken")[0].childNodes[0].nodeValue);
}
}
You must remember that AJAX is asynchronous - the response must be handled separately at the time it returns - hence the readystatechanged
event usage...
Remove the two lines after sending the request from your original code (they are in the stateChange
function).
Upvotes: 1
Reputation: 890
You have a ReferenceError in your JavaScript that prevents it from executing completely. "stateChange" is undefined. You need to define the stateChange function.
Also it looks like "response" is spelled wrong (responce).
Please go through this tutorial from W3Schools: http://www.w3schools.com/XML/xml_http.asp
You're very close so use W3Schools as a resource to fix up some other problems in your code.
Upvotes: 1
Reputation: 7029
maybe you should use xmlhttp.onreadystatechange and set it to a real function. the function stateChange() does not exist in the above example.
a good working example that does almost the same thing as you do is here: http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first
Upvotes: 1