一个由字符引起的XML加载错误

王朝other·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

今天看到一篇介绍AJAX原理的文章(http://www.dotnetbips.com/bdb52d60-1100-43b0-9b80-b765937201e8.aspx?articleid=306 ),主要是举了一个例子来说明。看了一下也就是关于XMLHTTP的应用,于是自己照着CODE一下。很快写完,于是测试,看看效果,本来以为可以马上顺利的看到效果,在下拉框里随便选了两项,一切ok,要取得的数据也正常能正常显示出来,但是在选另一下项的时候报错了。说是,webform1.aspx的脚本里头var orders=dstRoot.getElementsByTagName("OrderID"); 'null'为空或不是对象

赶快检查一下又没有把代码敲错(不可能照着敲也出错呀!)果然,没有敲错!代码逻辑上也是完全没有问题的,为什么会报这么一个错?!

最后几经周折,比较,发现在Northwind这个数据库Orders表中,有的记录中有这样的内容México D.F. 注意到这个é了么!就是这个字符的原因导致报错,也不知道是哪国字符,索性把é改成e,终于天下太平了!

下面附上代码,要是遇到这方面应用的时候,这些代码还是比较有用的!

Webform1.aspx的<HEAD>中:

<script language="javascript">

var obj;

function GetDataViaAJAX()

{

try

{

obj=new ActiveXObject("Msxml2.XMLHTTP");

}

catch(e1)

{

try

{

obj=new ActiveXObject("Microsoft.XMLHTTP");

}

catch(e2)

{

obj=null;

}

}

if(obj!=null)

{

obj.onreadystatechange=ProcessResponse;

obj.open("Get","./WebForm2.aspx?customerid="+document.getElementById("Dropdownlist1").value,true);

obj.send(null);

}

return false;

}

function ProcessResponse()

{

if(obj.readyState==4)

{

if(obj.status==200)

{

var dstRoot=obj.responseXML.documentElement;

var ddlOrders=document.getElementById("ListBox1");

for(var i=ddlOrders.length-1;i>-1;i--)

{

ddlOrders.options[i]=null;

}

var orders=dstRoot.getElementsByTagName("OrderID");

var text;

var listItem;

for(var i=0;i<orders.length;i++)

{

text=(orders[i].textContent||orders[i].innerText||orders[i].text);

listItem=new Option(text,text);

ddlOrders.options[i]=listItem;

}

}

else

{

alert(obj.status);

alert("Error Retriving Data!");

}

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航