有脚本如下:
代码:
<script langauge="javascritp" type="text/javascript">
<!--
var objXML;
function getXML(strURL) {
var req = false;
var xml;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E) {
req = false;
}
}
@end @*/
if (!req && typeof XMLHttpRequest != 'undefined') {
req = new XMLHttpRequest();
}
/////////////////////////////////////////////////////////
req.open("GET", strURL, true);
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
xml = req.responseXML;
alert(xml);
return xml;
}
}
}
req.send(null);
}
objXML = getXML("sorts.asp?action=list&ParentSort=0");
alert(objXML);
//-->
</script>
其中 sorts.asp?action=list&ParentSort=0 执行结果如下:
HTML 代码:
<?xml version="1.0" encoding="utf-8"?><SORTS><SORT><ID>1</ID><TITLE>大类</TITLE></SORT></SORTS>
可以不管它。
在执行过程中,根据测试效果,首先显示了 alert(objXML) 的内容,然后才是 alert(xml) 。所以前者显示的是 undefined ,后者是 XMLObject 。也就是说在 getXML() 执行完成前,alert(objXML) 就执行了。
不知道是不是在同步执行和异步执行的选择上出现问题,请指点一二。
谢谢!