| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2017 人关注过本帖
标题:如何解决IE下AJAX读取动态页面的错误?
只看楼主 加入收藏
lonelysea
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-22
收藏
 问题点数:0 回复次数:4 
如何解决IE下AJAX读取动态页面的错误?
本人今日正在学习使用AJAX技术与ASP的联合使用,我设计了一个ASP的页面用于动态生成一个XML的页面,然后使用AJAX技术读取该页面并进行相关操作。但是在实际使用中我出现了错误,代码在Firefox下执行正常,但是到IE下就报错,说我需要寻找的节点不存在,但是如果将AJAX的数据读取源从动态页改为静态的XML文件,程序执行又正常了,不知道是什么原因,难道是IE下的“Microsoft.XMLHTTP”和“Msxml2.XMLHTTP”不支持动态页面读取吗?还望斑竹和高手帮助解答,谢谢!
搜索更多相关主题的帖子: AJAX 动态 页面 
2006-05-22 18:31
lonelysea
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-22
收藏
得分:0 
请斑竹帮忙!
2006-05-23 19:14
lonelysea
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-22
收藏
得分:0 
再请斑竹帮忙!
2006-05-23 19:44
lonelysea
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-22
收藏
得分:0 
2006-05-25 09:57
lonelysea
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-22
收藏
得分:0 

因为我的表述不清造成了一些误解,下面我就将具体的问题联合案例文件一起发布出来,忘大家帮助解决。
我的展示文件包括三个:

AJAX.html——需要读取XML数据的页面,也是唯一使用了AJAX技术的页面

<!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=gb2312" />
<title>Js_Test_1.html</title>
<script language="java-script1.5" type="text/java-script">
<!--
function AJAX(){
var AJAXObj = null;
if (window.XMLHttpRequest){
AJAXObj = new XMLHttpRequest();
if (AJAXObj.overrideMimeType){
AJAXObj.overrideMimeType("text/xml");
}
}else if (window.ActiveXObject){
try{
AJAXObj = new ActiveXObject("Msxml2.XMLHTTP.5.0");
}catch (e){
try{
AJAXObj = new ActiveXObject("Msxml2.XMLHTTP.4.0");
}catch (e){
try{
AJAXObj = new ActiveXObject("Msxml2.XMLHTTP.3.0");
}catch (e){
try{
AJAXObj = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
AJAXObj = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){}
}
}
}
}
}
if (!AJAXObj) {
window.alert("不能创建 XMLHttpRequest 对象实例.");
return false;
}
this.UserFunction = function (UserFunctionName){
if (!UserFunctionName || UserFunctionName == null){
alert("AJAX erro:\nUserFunctionName's value is null or false value.");
return false;
}
AJAXObj.onreadystatechange = function (){
if (AJAXObj.readyState == 4){
if(AJAXObj.status == 200){
eval(UserFunctionName);
}else{
alert("您所请求的页面有异常。");
}
}
}
}
this.Value = function (){
return AJAXObj;
}
this.Send = function(Url,SendType,SendInfor){
if (!Url || Url == null){
alert("AJAX erro:\nUrl's value is null or false value.");
return false;
}
if (!SendType || SendType == null || SendType !== "POST" || SendType !== "HEAD"){
SendType = "GET";
}
if (!SendInfor || SendInfor == null){
SendInfor = null;
}
AJAXObj.open(SendType,Url,true);
if (SendInfor !== null){
AJAXObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
}
AJAXObj.send(SendInfor);
}
this.Clean = function (){
AJAXObj = null;
}
}
//-->
</script>
</head>

<body>
<script language="java-script1.5" type="text/java-script">
<!--
function Result(){
var XMLObj = AJAXTest.Value();
alert("XMLObj = " + XMLObj.responseText);
//读取属性值
//var NodeName = "DefaultLanguage";
//var XMLInfor = XMLObj.responseXML.getElementsByTagName(NodeName)[0].getAttribute("xml:lang");
//读取节点值
var NodeName = "AJAXTestInfor";
var XMLInfor = XMLObj.responseXML.getElementsByTagName(NodeName)[0].firstChild.nodeValue;
alert(NodeName + " = " + XMLInfor);
}

var AJAXTest = new AJAX();
AJAXTest.UserFunction("Result();");
AJAXTest.Send("XML.asp","POST",null);
//AJAXTest.Send("XML.xml","POST",null);
//-->
</script>
</body>
</html>

XML.asp——由ASP生成的动态XML数据源

<%@LANGUAGE="vb-script" CODEPAGE="936"%>
<%
Response.Buffer = True
Response.Expires = 0
%>
<?xml version="1.0" encoding="UTF-8"?>
<Languages>
<DefaultLanguage xml:lang="scn" />
<Language xml:lang="en" EngName="English" LangName="English" Charset="Windows-1252" IsUse="False">
<AJAXTestInfor>Are you sure quit?</AJAXTestInfor>
</Language>
<Language xml:lang="scn" EngName="SimpleChinese" LangName="SimpleChinese" Charset="Windows-1252" IsUse="True">
<AJAXTestInfor>您确定要退出系统管理面板吗?</AJAXTestInfor>
</Language>
<Language xml:lang="tcn" EngName="TraditionalChinese" LangName="TraditionalChinese" Charset="Windows-1252" IsUse="False">
<AJAXTestInfor>您確定要退出系統管理面板嗎?</AJAXTestInfor>
</Language>
</Languages>

XML.xml——静态的XML数据源

<?xml version="1.0" encoding="UTF-8"?>
<Languages>
<DefaultLanguage xml:lang="scn" />
<Language xml:lang="en" EngName="English" LangName="English" Charset="Windows-1252" IsUse="False">
<AJAXTestInfor>Are you sure quit?</AJAXTestInfor>
</Language>
<Language xml:lang="scn" EngName="SimpleChinese" LangName="SimpleChinese" Charset="Windows-1252" IsUse="True">
<AJAXTestInfor>您确定要退出系统管理面板吗?</AJAXTestInfor>
</Language>
<Language xml:lang="tcn" EngName="TraditionalChinese" LangName="TraditionalChinese" Charset="Windows-1252" IsUse="False">
<AJAXTestInfor>您確定要退出系統管理面板嗎?</AJAXTestInfor>
</Language>
</Languages>

以上就是全部的三个范例文件。
测试的时候,如果使用XML.xml文件作为数据源则可以正确的执行,但是如果使用XML.asp作为数据源,则在Firefox下可以正确执行,但在IE下则会报错,错误信息如下:

图片附件: 游客没有浏览图片的权限,请 登录注册

不知道为何原因,请高手、斑竹帮助,谢谢!

2006-05-25 10:02
快速回复:如何解决IE下AJAX读取动态页面的错误?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020930 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved