运行 ajax基础教程 上面的例子,出现单击按钮无反应的情况,使用的浏览器 IE6。0,FIREFOX 1。5。0。6.
在另外一台电脑上面运行,结果一样。单击无反应。
代码清单 simpleRequest.html
<!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>Simple XMLHttpRequest</title>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function startRequest() {
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", "simpleResponse.xml", true);
xmlHttp.send(null);
}
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
alert("The server replied with: " + xmlHttp.responseText);
}
}
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="Start Basic Asynchronous Request" onclick="startRequest();"/>
</form>
</body>
</html>
服务器端的响应文件simpleResponse.xml就只用一行文本
Hello from the server!
有时间的话麻烦提点建议或者告诉如何解决,谢谢!!!
qq:285230769
mail:wen.285230769@gmail.com
19 个解决方案
#1
返回什么错误消息?
#2
无错误信息返回
#3
恩,有,不过我想不是这个原因
在用FF的时候,可以检测出JS没有出错,提示是xml文件出错。格式不对。
错误: 语法错误
源文件:file:///E:/%CA%E9%BC%AE%D4%B4%C2%EB/Ajax%BB%F9%B4%A1%BD%CC%B3%CC/foundations-of-ajax-examples/Chapter02/web/simpleResponse.xml
行:1,列:1
源代码:
Hello from the server!^
在用FF的时候,可以检测出JS没有出错,提示是xml文件出错。格式不对。
错误: 语法错误
源文件:file:///E:/%CA%E9%BC%AE%D4%B4%C2%EB/Ajax%BB%F9%B4%A1%BD%CC%B3%CC/foundations-of-ajax-examples/Chapter02/web/simpleResponse.xml
行:1,列:1
源代码:
Hello from the server!^
#4
我刚才试了下,把xml文件改为
<?xml version="1.0" encoding="UTF-8"?>
<text>
Hello from the server!
</text>
将不出现任何错误信息,问题依旧,单击 无反应。
<?xml version="1.0" encoding="UTF-8"?>
<text>
Hello from the server!
</text>
将不出现任何错误信息,问题依旧,单击 无反应。
#5
建议通过web直接访问那个xml,比如http://localhost/..../**.xml的形式,判断是否能访问得了,如果能看到节点状态的xml,再测试IE下能否响应ajax,这个例子我也做过,但是也只能在IE下反应成功,FF没有效果
#6
谢谢koon。
能够正常运行了(IE6.0,FF1.5.0.6),但还是有一个地方不明白。
正常运行前:我是双击文件在浏览器中打开。点击无效。
正常运行时:我创建了一个虚拟目录指向文件所在的文件夹,运行没问题。
为什么?
能够正常运行了(IE6.0,FF1.5.0.6),但还是有一个地方不明白。
正常运行前:我是双击文件在浏览器中打开。点击无效。
正常运行时:我创建了一个虚拟目录指向文件所在的文件夹,运行没问题。
为什么?
#7
这样xmlHttp.responseXML应该就好了吧
#8
我想YOUYOU390你说的对,不过为什么呢?
因为我用Tamper Data查看的时候,如果是双击的话,无反应。
如果是浏览虚拟目录下的文件的话,就可以查看到响应的数据。
host:localhost
user-agent :
Accept:..
..
因为我用Tamper Data查看的时候,如果是双击的话,无反应。
如果是浏览虚拟目录下的文件的话,就可以查看到响应的数据。
host:localhost
user-agent :
Accept:..
..
#9
xmlHttp.open("GET", "simpleResponse.xml", true);
因为你打开的是xml文件,所以就应该是读xml文件的方法啊。
因为你打开的是xml文件,所以就应该是读xml文件的方法啊。
#10
我想我是明白了。~_~,因为
XMLHttpRequest对象的作用是:提供客户端同http服务器通讯的协议
如果我不把文件放在某个虚拟目录下,根本就找不到服务器。所以也就没有任何响应 。
如果理解不对的话,麻烦指出来,谢谢。
2天后结贴,如果没有其他的不同的看法的话。
XMLHttpRequest对象的作用是:提供客户端同http服务器通讯的协议
如果我不把文件放在某个虚拟目录下,根本就找不到服务器。所以也就没有任何响应 。
如果理解不对的话,麻烦指出来,谢谢。
2天后结贴,如果没有其他的不同的看法的话。
#11
修正下上面的发言:
我想YOUYOU390你说的对,不过为什么呢?
因为我用Tamper Data查看的时候,如果是双击的话,无反应。
如果是浏览虚拟目录下的文件的话,就可以查看到响应的数据。
。。。。
XMLHTTP参考上面是这样描述的:
http://www.xmlhttp.cn/manual/responsexml.html
responseText
将响应信息作为字符串返回
responseXML
将响应信息格式化为Xml Document对象并返回
所以这里没必要一定要用responseXML,因为我XML文件里面就只有一句话,当作字符串返回也没问题。
我想YOUYOU390你说的对,不过为什么呢?
因为我用Tamper Data查看的时候,如果是双击的话,无反应。
如果是浏览虚拟目录下的文件的话,就可以查看到响应的数据。
。。。。
XMLHTTP参考上面是这样描述的:
http://www.xmlhttp.cn/manual/responsexml.html
responseText
将响应信息作为字符串返回
responseXML
将响应信息格式化为Xml Document对象并返回
所以这里没必要一定要用responseXML,因为我XML文件里面就只有一句话,当作字符串返回也没问题。
#12
xmlHttp.open("GET", "simpleResponse.xml", true);
如果用localhost地址打开,那么地址指向localhost/aaa/simpleResponse.xml
如果双击直接打开,那么地址是simpleResponse.xml,这根本就不存在,应该改为
file:///F:/simpleResponse.xml
如果用localhost地址打开,那么地址指向localhost/aaa/simpleResponse.xml
如果双击直接打开,那么地址是simpleResponse.xml,这根本就不存在,应该改为
file:///F:/simpleResponse.xml
#13
^_^Taciterry(面朝大海,春暖花开) 说的很对,不过很奇怪当时怎么也没注意到这个。
#14
if(xmlHttp.status == 200) {
alert("The server replied with: " + xmlHttp.responseText);
}
这里的问题,如果是在本地直接双击打开的话,浏览器URL是file:///c:\xxx.htm
xmlHttp返回的不是200,你可以试试返回的是多少
如果是从服务器上浏览的话,成功就返回200
你试试
alert("The server replied with: " + xmlHttp.responseText);
}
这里的问题,如果是在本地直接双击打开的话,浏览器URL是file:///c:\xxx.htm
xmlHttp返回的不是200,你可以试试返回的是多少
如果是从服务器上浏览的话,成功就返回200
你试试
#15
顶了,接分!
#16
webphoenix() 提到查看返回xmlHttp的状态码status.
我把程序部分改为如此:
原来:
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
alert("The server replied with: " + xmlHttp.responseText);
}
}
}
修改:
function handleStateChange() {
alert("The server replied with: " + xmlHttp.status);
}
从服务器上浏览的话,成功返回200
双击打开的话,返回的是0
奇怪,即使在w3c上也找不到0代表什么
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
我把程序部分改为如此:
原来:
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
alert("The server replied with: " + xmlHttp.responseText);
}
}
}
修改:
function handleStateChange() {
alert("The server replied with: " + xmlHttp.status);
}
从服务器上浏览的话,成功返回200
双击打开的话,返回的是0
奇怪,即使在w3c上也找不到0代表什么
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
#17
XMLHttpRequest对象的status属性一般用来返回服务器的HTTP状态码。status为200表示“成功”,status为404代表“页面未找到”。很多书上都是这样写的,一点也不错。
但是,有时候,特别是刚开始学Ajax的时候,可能会将代码直接在本地运行。这样就出现问题了。如果在本地运行(如:C:\ajax\helloworld.htm),那么status属性不管是在“成功”还是“页面未找到”的情况下,都返回的是0,而不是200和404。这个时候如果还用if(xmlHttp.status==200)来判断运行,则会毫无结果。如果要在本地测试,最好写成if(xmlHttp.status==200 || xmlHttp.status==0)的形式来判断。
但是,有时候,特别是刚开始学Ajax的时候,可能会将代码直接在本地运行。这样就出现问题了。如果在本地运行(如:C:\ajax\helloworld.htm),那么status属性不管是在“成功”还是“页面未找到”的情况下,都返回的是0,而不是200和404。这个时候如果还用if(xmlHttp.status==200)来判断运行,则会毫无结果。如果要在本地测试,最好写成if(xmlHttp.status==200 || xmlHttp.status==0)的形式来判断。
#18
按照webphoenix的上面的写法修改了下,if(xmlHttp.status==200 || xmlHttp.status==0)
就可以在本地正常的返回.
但是又有一个新的问题出现了。
我把xml文件修改了下,就比较有意思了:
原文件(一句话):
Hello from the server!
修改后:
<text>
Hello from the server!
</text>
(使用浏览器:FF1.5.0.6)
如果是在IIS下运行的话,结果是:
The server replied with:hello from the server
如果是在本地直接运行:
The server replied with:<text>
hello from the server
</text>
(使用浏览器:IE6.0)
在本地或者服务器端运行,返回结果:
The server replied with:<text>
hello from the server
</text>
谁可以帮忙解释下吗?
就可以在本地正常的返回.
但是又有一个新的问题出现了。
我把xml文件修改了下,就比较有意思了:
原文件(一句话):
Hello from the server!
修改后:
<text>
Hello from the server!
</text>
(使用浏览器:FF1.5.0.6)
如果是在IIS下运行的话,结果是:
The server replied with:hello from the server
如果是在本地直接运行:
The server replied with:<text>
hello from the server
</text>
(使用浏览器:IE6.0)
在本地或者服务器端运行,返回结果:
The server replied with:<text>
hello from the server
</text>
谁可以帮忙解释下吗?
#19
此问题以结贴,谢谢上面各位的支持与回答。
#20
#1
返回什么错误消息?
#2
无错误信息返回
#3
恩,有,不过我想不是这个原因
在用FF的时候,可以检测出JS没有出错,提示是xml文件出错。格式不对。
错误: 语法错误
源文件:file:///E:/%CA%E9%BC%AE%D4%B4%C2%EB/Ajax%BB%F9%B4%A1%BD%CC%B3%CC/foundations-of-ajax-examples/Chapter02/web/simpleResponse.xml
行:1,列:1
源代码:
Hello from the server!^
在用FF的时候,可以检测出JS没有出错,提示是xml文件出错。格式不对。
错误: 语法错误
源文件:file:///E:/%CA%E9%BC%AE%D4%B4%C2%EB/Ajax%BB%F9%B4%A1%BD%CC%B3%CC/foundations-of-ajax-examples/Chapter02/web/simpleResponse.xml
行:1,列:1
源代码:
Hello from the server!^
#4
我刚才试了下,把xml文件改为
<?xml version="1.0" encoding="UTF-8"?>
<text>
Hello from the server!
</text>
将不出现任何错误信息,问题依旧,单击 无反应。
<?xml version="1.0" encoding="UTF-8"?>
<text>
Hello from the server!
</text>
将不出现任何错误信息,问题依旧,单击 无反应。
#5
建议通过web直接访问那个xml,比如http://localhost/..../**.xml的形式,判断是否能访问得了,如果能看到节点状态的xml,再测试IE下能否响应ajax,这个例子我也做过,但是也只能在IE下反应成功,FF没有效果
#6
谢谢koon。
能够正常运行了(IE6.0,FF1.5.0.6),但还是有一个地方不明白。
正常运行前:我是双击文件在浏览器中打开。点击无效。
正常运行时:我创建了一个虚拟目录指向文件所在的文件夹,运行没问题。
为什么?
能够正常运行了(IE6.0,FF1.5.0.6),但还是有一个地方不明白。
正常运行前:我是双击文件在浏览器中打开。点击无效。
正常运行时:我创建了一个虚拟目录指向文件所在的文件夹,运行没问题。
为什么?
#7
这样xmlHttp.responseXML应该就好了吧
#8
我想YOUYOU390你说的对,不过为什么呢?
因为我用Tamper Data查看的时候,如果是双击的话,无反应。
如果是浏览虚拟目录下的文件的话,就可以查看到响应的数据。
host:localhost
user-agent :
Accept:..
..
因为我用Tamper Data查看的时候,如果是双击的话,无反应。
如果是浏览虚拟目录下的文件的话,就可以查看到响应的数据。
host:localhost
user-agent :
Accept:..
..
#9
xmlHttp.open("GET", "simpleResponse.xml", true);
因为你打开的是xml文件,所以就应该是读xml文件的方法啊。
因为你打开的是xml文件,所以就应该是读xml文件的方法啊。
#10
我想我是明白了。~_~,因为
XMLHttpRequest对象的作用是:提供客户端同http服务器通讯的协议
如果我不把文件放在某个虚拟目录下,根本就找不到服务器。所以也就没有任何响应 。
如果理解不对的话,麻烦指出来,谢谢。
2天后结贴,如果没有其他的不同的看法的话。
XMLHttpRequest对象的作用是:提供客户端同http服务器通讯的协议
如果我不把文件放在某个虚拟目录下,根本就找不到服务器。所以也就没有任何响应 。
如果理解不对的话,麻烦指出来,谢谢。
2天后结贴,如果没有其他的不同的看法的话。
#11
修正下上面的发言:
我想YOUYOU390你说的对,不过为什么呢?
因为我用Tamper Data查看的时候,如果是双击的话,无反应。
如果是浏览虚拟目录下的文件的话,就可以查看到响应的数据。
。。。。
XMLHTTP参考上面是这样描述的:
http://www.xmlhttp.cn/manual/responsexml.html
responseText
将响应信息作为字符串返回
responseXML
将响应信息格式化为Xml Document对象并返回
所以这里没必要一定要用responseXML,因为我XML文件里面就只有一句话,当作字符串返回也没问题。
我想YOUYOU390你说的对,不过为什么呢?
因为我用Tamper Data查看的时候,如果是双击的话,无反应。
如果是浏览虚拟目录下的文件的话,就可以查看到响应的数据。
。。。。
XMLHTTP参考上面是这样描述的:
http://www.xmlhttp.cn/manual/responsexml.html
responseText
将响应信息作为字符串返回
responseXML
将响应信息格式化为Xml Document对象并返回
所以这里没必要一定要用responseXML,因为我XML文件里面就只有一句话,当作字符串返回也没问题。
#12
xmlHttp.open("GET", "simpleResponse.xml", true);
如果用localhost地址打开,那么地址指向localhost/aaa/simpleResponse.xml
如果双击直接打开,那么地址是simpleResponse.xml,这根本就不存在,应该改为
file:///F:/simpleResponse.xml
如果用localhost地址打开,那么地址指向localhost/aaa/simpleResponse.xml
如果双击直接打开,那么地址是simpleResponse.xml,这根本就不存在,应该改为
file:///F:/simpleResponse.xml
#13
^_^Taciterry(面朝大海,春暖花开) 说的很对,不过很奇怪当时怎么也没注意到这个。
#14
if(xmlHttp.status == 200) {
alert("The server replied with: " + xmlHttp.responseText);
}
这里的问题,如果是在本地直接双击打开的话,浏览器URL是file:///c:\xxx.htm
xmlHttp返回的不是200,你可以试试返回的是多少
如果是从服务器上浏览的话,成功就返回200
你试试
alert("The server replied with: " + xmlHttp.responseText);
}
这里的问题,如果是在本地直接双击打开的话,浏览器URL是file:///c:\xxx.htm
xmlHttp返回的不是200,你可以试试返回的是多少
如果是从服务器上浏览的话,成功就返回200
你试试
#15
顶了,接分!
#16
webphoenix() 提到查看返回xmlHttp的状态码status.
我把程序部分改为如此:
原来:
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
alert("The server replied with: " + xmlHttp.responseText);
}
}
}
修改:
function handleStateChange() {
alert("The server replied with: " + xmlHttp.status);
}
从服务器上浏览的话,成功返回200
双击打开的话,返回的是0
奇怪,即使在w3c上也找不到0代表什么
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
我把程序部分改为如此:
原来:
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
alert("The server replied with: " + xmlHttp.responseText);
}
}
}
修改:
function handleStateChange() {
alert("The server replied with: " + xmlHttp.status);
}
从服务器上浏览的话,成功返回200
双击打开的话,返回的是0
奇怪,即使在w3c上也找不到0代表什么
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
#17
XMLHttpRequest对象的status属性一般用来返回服务器的HTTP状态码。status为200表示“成功”,status为404代表“页面未找到”。很多书上都是这样写的,一点也不错。
但是,有时候,特别是刚开始学Ajax的时候,可能会将代码直接在本地运行。这样就出现问题了。如果在本地运行(如:C:\ajax\helloworld.htm),那么status属性不管是在“成功”还是“页面未找到”的情况下,都返回的是0,而不是200和404。这个时候如果还用if(xmlHttp.status==200)来判断运行,则会毫无结果。如果要在本地测试,最好写成if(xmlHttp.status==200 || xmlHttp.status==0)的形式来判断。
但是,有时候,特别是刚开始学Ajax的时候,可能会将代码直接在本地运行。这样就出现问题了。如果在本地运行(如:C:\ajax\helloworld.htm),那么status属性不管是在“成功”还是“页面未找到”的情况下,都返回的是0,而不是200和404。这个时候如果还用if(xmlHttp.status==200)来判断运行,则会毫无结果。如果要在本地测试,最好写成if(xmlHttp.status==200 || xmlHttp.status==0)的形式来判断。
#18
按照webphoenix的上面的写法修改了下,if(xmlHttp.status==200 || xmlHttp.status==0)
就可以在本地正常的返回.
但是又有一个新的问题出现了。
我把xml文件修改了下,就比较有意思了:
原文件(一句话):
Hello from the server!
修改后:
<text>
Hello from the server!
</text>
(使用浏览器:FF1.5.0.6)
如果是在IIS下运行的话,结果是:
The server replied with:hello from the server
如果是在本地直接运行:
The server replied with:<text>
hello from the server
</text>
(使用浏览器:IE6.0)
在本地或者服务器端运行,返回结果:
The server replied with:<text>
hello from the server
</text>
谁可以帮忙解释下吗?
就可以在本地正常的返回.
但是又有一个新的问题出现了。
我把xml文件修改了下,就比较有意思了:
原文件(一句话):
Hello from the server!
修改后:
<text>
Hello from the server!
</text>
(使用浏览器:FF1.5.0.6)
如果是在IIS下运行的话,结果是:
The server replied with:hello from the server
如果是在本地直接运行:
The server replied with:<text>
hello from the server
</text>
(使用浏览器:IE6.0)
在本地或者服务器端运行,返回结果:
The server replied with:<text>
hello from the server
</text>
谁可以帮忙解释下吗?
#19
此问题以结贴,谢谢上面各位的支持与回答。