简体   繁体   中英

javascript xmlhttprequest won't work

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> 

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.

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

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).

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...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM