javascript xmlhttprequest 不起作用

发布于 2024-10-01 16:11:11 字数 1324 浏览 3 评论 0原文

我正在为一个新项目学习 javascript。 我看过很多关于javascript和xmlhttprequest的教程, 但是当我尝试运行解码时它不起作用。 有人可以帮助我吗?

这是我的 html+javascript 代码:

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

这是我的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<info>
        <name>test</name>
        <nummber>10</nummber>
</info>

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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

萌梦深 2024-10-08 16:11:11

也许您应该使用 xmlhttp.onreadystatechange 并将其设置为真正的函数。上面的示例中不存在函数 stateChange()。

这里有一个很好的工作示例,它的功能与您几乎相同:
http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

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

我不是你的备胎 2024-10-08 16:11:11

JavaScript 中存在 ReferenceError,导致其无法完全执行。 “stateChange”未定义。您需要定义 stateChange 函数。

另外,“响应”似乎拼写错误(响应)。

请阅读 W3Schools 提供的本教程: http://www.w3schools.com/XML/xml_http.asp

您已经非常接近了,因此请使用 W3Schools 作为资源来修复代码中的一些其他问题。

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.

眼睛会笑 2024-10-08 16:11:11

您调用的 onreadystatechange 未定义 stateChange() - 添加一个名为 stateChange 的函数,响应返回后将调用该函数。

此类函数的一个示例:

function stateChange() {
    if(xmlhttp.readyState == 4){
        xmldoc = xmlhttp.responseXML.documentElement;
        document.write(xmlhttp.getElementsByTagName("vakken")[0].childNodes[0].nodeValue);
    }
}

您必须记住 AJAX 是异步的 - 响应必须在返回时单独处理 - 因此 readystatechanged 事件用法...
从原始代码中发送请求后删除这两行(它们位于 stateChange 函数中)。

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

时光无声 2024-10-08 16:11:11

您是否没有在请求中收到答案,或者可能是这样的情况,您得到了答案,但它没有写入您的 dom 中?最近我遇到了一个问题,document.write 在我的一个页面中不起作用。我发现,基于 XHTML 的页面不允许使用 document.write (我的页面是 XHTML 1.1,你的页面是 XHTML 1.0)。所以这只是一个猜测。您可以使用 Firefox 的 firebug-extension 对此进行测试。尽管所有常见浏览器都不允许 document.write 并抛出错误消息,但 IE 在任何情况下都支持 document.write...

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文