有脚本如下:

代码:
<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) 就执行了。

不知道是不是在同步执行和异步执行的选择上出现问题,请指点一二。

谢谢!