Javascript学习笔记12——Ajax入门

Ajax:Asynchronous Javascript And XML。写个简单的例子:

<body>
<
form id="form1" runat="server">
<
div>
<
asp:Label ID="LabelTime" runat="server"></asp:Label>
</
div>
</
form>
<
script type="text/javascript">
if
(!window.XMLHttpRequest) {
window.XMLHttpRequest = function () {
return new ActiveXObject("Microsoft.XMLHTTP");
};
}
function UpdateClock() {
var request = new XMLHttpRequest();
request.open("post", "TimeTest.aspx", false);
request.send("");
document.getElementById("LabelTime").innerText = request.responseText;
}
setInterval(UpdateClock, 1000);

</script>
</
body>

而在另一个页面写下当前时间,这样就形成了一个钟表。

代码很简单,就是操纵一个XMLHttpRequest对象来获取服务器时间,然后更新时间。上面的代码在与服务器交互时,并没有页面整体刷新,而是局部刷新。

但是上面的代码在request.open时,最后一个参数为false,表示发出的XMLHttpRequest是同步的,由于Javascript是单线程的,所以在等待请求的过程中,线程会被阻塞,如果请求时间过长,浏览器会停止响应。

虽然Javascript是单线程的,但是XMLHttpRequest具备异步处理请求的能力。代码如下:

<body>
<
form id="form1" runat="server">
<
div>
<
asp:Label ID="LabelTime" runat="server"></asp:Label>
</
div>
</
form>
<
script type="text/javascript">
if
(!window.XMLHttpRequest) {
window.XMLHttpRequest = function () {
return new ActiveXObject("Microsoft.XMLHTTP");
};
}

function AsynRequest() {
var request = new XMLHttpRequest();
request.open("post", "TimeTest.aspx", true);
request.onreadystatechange = function () {
if (request.readyState === 4) {
UpdateClock(request.responseText);
}
};
request.send("");
}
function UpdateClock(time) {
document.getElementById("LabelTime").innerText = time;
}
setInterval(AsynRequest, 1000);

</script>
</
body>

哎,没有智能提示的日子真不好过。

posted @   飞林沙  阅读(1447)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
点击右上角即可分享
微信分享提示