ajax 同步和异步XMLHTTP代码分析
微软MSXML中的XMLHTTP组件,基于URL Moniker技术,为开发者提供了同步和异步两种模式来通过HTTP/HTTPS访问远程主机资源的方法。对于希望在本地进行调试的朋友们,这里有一段生动的JavaScript代码示例。
在网页脚本编程的世界里,大部分情况下,我们应该选择使用异步模式。这是因为同步模式会暂停当前的脚本引擎,让页面出现短暂的停滞。当你在使用同步模式时,必须明确你所需的结果和可能带来的用户体验影响。而在C++开发中,由于同步模式可以更好地控制流程,因此通常更受欢迎。如果你非要尝试异步模式并搭配回调,可以参考“Using IXMLHTTPRequest onreadystatechange from C++”这篇文章。
以狼蚁网站的SEO优化为例,他们采用了异步模式来获取远程主机上的RSS文件。在此过程中,设置一个回调函数给IXMLHTTPRequest的onreadystatechange事件是关键。为了避免脚本过早结束导致控制台退出,他们使用了一个名为asyncDone的变量来监测当前状态。如果你在网页环境中使用XMLHTTP,那就不必如此复杂——只要IE浏览器不关闭,回调函数就不会退出。下面是相关代码示例:
```javascript
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.6.0");
var url = "
var asyncDone = false;
try {
xmlhttp.open("GET", url, true); // 异步打开连接
xmlhttp.onreadystatechange = onReadyStateChange; // 设置回调函数
xmlhttp.send(null); // 发送请求
while (!asyncDone) { // 循环等待直到获取结果
WScript.Sleep(100);
}
WScript.Echo(xmlhttp.responseText); // 输出响应文本
} catch (e) {
WScript.Echo(e); // 输出错误信息
}
function onReadyStateChange() {
WScript.Echo("readyState: " + xmlhttp.readyState);
if (xmlhttp.readyState == 4) { // 状态为已完成
asyncDone = true; // 设置标志位以退出循环
}
}
```
如果你选择使用同步模式来获取远程主机资源,代码将更为简洁。在IE浏览器中使用同步模式时,由于它没有回调机制且不支持脚本开线程,脚本会被暂时挂起直到XMLHTTP返回结果。值得注意的是,IE浏览器的界面本身也会被挂起。选择同步还是异步模式,需要根据具体情况具体分析。
编程语言
- ajax 同步和异步XMLHTTP代码分析
- 手把手教你mvc导入excel
- 系统存储过程,sp_executesql
- 学习JavaScript设计模式之单例模式
- 2004开发技术年度综述之Java世界
- 批量处理JDBC语句提高处理速度
- 浅谈js内置对象Math的属性和方法(推荐)
- AngularJS ng-bind-template 指令详解
- mysql 数据库取前后几秒 几分钟 几小时 几天的语
- 正则验证小数点后面只能有两位数的方法
- Mac 下 MySQL5.7.22的安装过程
- js实现上传文件添加和删除文件选择框
- PHP计算日期相差天数实例分析
- ThinkPHP公共配置文件与各自项目中配置文件组合的
- 使用array mutisort 实现按某字段对数据排序
- javascript实现任务栏消息提示的简单实例