AJAX在www.dictworld.com上的实现

Meteorlet Meteorlet 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
之前的贴子很多人在讨论动态从Server端获取数据问题,因为我比较钟爱PHP所以ASP版来的很少,也没来得及跟大家讨论。因为这是ASP版所以我也不多说PHP跟ASP语言相关的问题,只说说原理和效率。

客户端想获取服务器端的数据必须通过HTTP请求,以前都是通过超链接去刷新,但是自从推出了XMLHTTP组件以后,我们可以把HTTP请求放到Javascript里去实现,获取的数据通过Javascript动态显示,这样做的好处就是无刷新,不会看到页面的闪烁,最先应用的地方就是聊天室。后来有人把这种工作原理称为AJAX。

HTTP请求原理:
-> Send Request -> Server Side
XMLHTTP |
<------Response---------|

AJAX实现原理:
新建XMLHTTP -> 填写必要的Header -> 设定异步回调函数用来处理接收到的数据 -> 发送HTTP请求

异步回调函数 OnProcess() -> 判断返回的状态是否是正确的200 status->接收数据,保存到字符串
->分析字符串(如果是XML格式,可以调用XMLDOM进行解析)->把得到的数据填入网页中的元素里

实现代码:
// HTTP request object
var req = null;

// HTTP request url
var url = "www.dictworld.com/dict.php?s=1";

if (window.XMLHttpRequest) { // Non-IE browsers
req = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
req = new ActiveXObject("Microsoft.XMLHTTP");
}
if (req) {

req.onreadystatechange = OnProcess;
req.open("GET", url, true);
req.send();
}

// callback function to handle the response from the server
function OnProcess()
{
if (req.readyState == 4) {
if (req.status == 200) {

// 正确返回
}
}
}

一次HTTP请求需要很多时间,所以说用AJAX是以牺牲效率为代价的,自然速度也不会很快。还有一种
做法就是把数据库里的数据通过Javascript缓存到客户端,类似这样:
var word[1] = "abc";
var word[2] = "abd";
var word[3] = "abe";
...
然后对word数组进行搜索过滤。对于数据量少的情况这样做是可行的,但是对于海量数据库这样的一个
页面,加载处理时间会远远大于用户所能忍受的时间。加载的数据量其实不多的,就拿我的数据库来说,
也就5万条记录,每条记录10个字母的单词,也就只有500K的数据,但是对这5万条记录进行遍历就很慢
了,如果加上排序,一般冒泡排序就是O(n^2)的复杂度。把对这么多数据的处理放到服务器端是值得的。
这就是为什么GOOGLE喜欢AJAX的原因。而且每次请求花费的时间基本上是固定的,而且这些时间是在你
浏览网页的同时不知不觉的异步进行的。
...全文

相关推荐

Ansible的安装及部署

常用配置参数 #[default] ##基本信息设定 inventory= ##指定清单路径 remote_user= ##在受管主机上登陆的用户名称,未指定使用当前用户 ask_pass= ##是否提示输入SSH密码,如果公钥登陆设定为false library= ##库文件存放目录 local_tmp= ##本机临时命令执行目录 remote_tmp= ##远程主机临时py命令文件存放目录 forks= ##默认并发数量 host_key_checking= ##第一次连接受管主机时是否要输入yes建立

Gong_yz

二、ansible 安装与配置文件管理

ansible安装常用的两种方式,yum安装和 pip程序安装 pip安装(python的包管理模块)安装 查看ansible版本 ansible --version 二、ansible相关文件 ansible目录如下(yum安装)配置文件目录:/etc/ansible/ansible.cfg配置主机清单文件:/etc/ansible/hosts存放ansible角色的目录:/etc/ansible/roles执行文件:/usr/bin/Lib库依赖目录:/usr/lib/pythonX.X

繁华依在

JEP30-PX100A PartModel Product Guidelines for Electronic-Device Substrates and Assemblies – XML Requ

JEP30-PX100A PartModel Product Guidelines for Electronic-Device Substrates and Assemblies – XML Requirements

cdming

基于Matlab的自动睡眠粒状结构检测算法,从脑电信号中进行。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

JEP375 2.5D_3D Silicon thinned wafers with Through Silicon Vias (TSV’s) and Backside Redistribution

JEP375 2.5D_3D Silicon thinned wafers with Through Silicon Vias (TSV’s) and Backside Redistribution Layer (RDL).pdf

Red Car
评论 3
收藏 已收藏
分享
返回顶部
Meteorlet
ASP 28,401 成员 356,940 内容