有脚本如下: 代码: <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) 就执行了。 不知道是不是在同步执行和异步执行的选择上出现问题,请指点一二。 谢谢!
考察了 vB 的中 AJAX 的应用,基本上都是在需要的时候运用 XMLHttpRequest 组件的。 可能我的思路本身就是错的。 这个也可能因为其应用中本身存在的 同步 和 异步 加载,就是晚于其它的脚本执行的。