读书人

5个QQ群里没人解决的Ajax小疑点:lt;ajax

发布时间: 2012-01-29 21:39:32 作者: rapoo

5个QQ群里没人解决的Ajax小问题:<ajax基础教程>上的一段代码,请指教~~!
一个静态parseXML.xml文件:
<?xml version= "1.0 " encoding= "UTF-8 "?>
<states>
<north>
<state> jilin </state>
<state> heilongjiang </state>
<state> haerbin </state>
</north>
<south>
<state> gz </state>
<state> sz </state>
<state> nn </state>
</south>
<east>
<state> nj </state>
<state> sh </state>
<state> nb </state>
</east>
<west>
<state> qh </state>
<state> wh </state>
<state> kkxl </state>
</west>
</states>

HTML文件里两个Button:
<input name= "northButton " type= "button " value= "显示北部城市 " onclick= "startRequest( 'north ') " />
<input name= "allButton " type= "button " value= "显示全部城市 " onclick= "startRequest( 'all ') " />

HTML文件里的JS:
<script type= "text/javascript ">
var xmlHttp;
var requestType;

function createHttpRequest()
{
if(window.ActiveXObject)
{
xmlHttp=new window.ActiveXObject( "Microsoft.XMLHTTP ");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new XMLHttpRequest();
}
}

function startRequest(requestList)
{
requestType=requestList;

createHttpRequest();
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open( "GET ", "parseXML.xml ",true);
xmlHttp.send(null);
}

function handleStateChange()
{
if(xmlHttp.readystate==4)
{
//本机返回成功时的xmlHttp.status值也为0,所以下一句判断status是否为0
if(xmlHttp.status==200||xmlHttp.status==0)
{
alert(xmlHttp.responseText);
if(requestType== "north ")
{
ListNorthStates();
}
else if(requestType== "all ")
{
ListAllStates();
}
}
}
}

function ListNorthStates()
{
var xmlDoc=xmlHttp.responseXML;
//如果用xmlHttp.responseText,则可以得到正常的XML文件
var northNode=xmlDoc.getElementsByTagName( "north ")[0];
var states=northNode.getElementsByTagName( "state ");
alert(states.length);//这里得出的states.length既然是0
var out= "north States ";

outPutList(out,states);
}

function ListAllStates()
{
var xmlDoc=xmlHttp.responseXML;
var states=xmlDoc.getElementsByTagName( "state ");
alert(states.length);//这里得出的states.length也是0
var out= "all States ";

outPutList(out,states);
}

function outPutList(title,states)
{
var out=title;
var currenState=null;

for(var i=0;i < states.length;i++)
{
currenState=states[i];
out=out+ "\n- "+currenState.childNodes[0].nodeValue;
}
alert(out);
}
</script>
------------------------------------------
问题:只要把xmlHttp.open的URL设置为远程的XML文件,访问一切正常...但只要是在本地的xml文件,用getElementsByTagName得出的元素组总是为空...这到底是什么回事...(PS:浏览器为IE)

------解决方案--------------------


没看明白哪里不对!

学习ing。。
[解决办法]
帮你顶
[解决办法]
顶一下~~学习ing
[解决办法]
感觉挺对的阿,难道我没看明白是什么意思,复制过来试了一下好像也是对的阿...
[解决办法]
var xmlDoc=xmlHttp.responseXML;
这行 xmlDoc返回的是 OBJECT 吗
[解决办法]
responseXML 只要异步交互成功肯定返回一个object..
刚才调试了一下...responseXML.documentELement是null 那肯定是没有办法获得结果的..换了几种写法还是这样..这个问题真奇怪啊. 难道不支持本地xml调用?
[解决办法]
问题:只要把xmlHttp.open的URL设置为远程的XML文件,访问一切正常...但只要是在本地的xml文件,用getElementsByTagName得出的元素组总是为空...这到底是什么回事...(PS:浏览器为IE)

-----------------------------------------

请问LZ javascript 能不能访问本地的文件?

读书人网 >asp.net

热点推荐