继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

原生 Ajax 实现搜索框智能提示

时间啊
关注TA
已关注
手记 19
粉丝 97
获赞 583
前言

一直以来,使用 JQuery 来实现 Ajax 请求,感觉有必要了解一下原生 JS 的实现方式,本文详细介绍原生 Ajax 实现搜索框智能提示,以及XMLHttpRequest 对象。

<!-- more -->

AJAX介绍

概念

AJAX即“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术。

优点

使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。

缺点

它破坏浏览器的后退与加入收藏书签功能。

解决方案

HTML5之前的一种方式是使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持追踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)

HTML5 以后可以直接操作浏览历史,并以字符串形式存储网页状态,将网页加入网页收藏夹或书签时状态会被隐形地保留。

Js通用代码

跨浏览器的通用方法

var xmlHttp;if (typeof XMLHttpRequest != "undefined") {
  xmlHttp = new XMLHttpRequest();} else if (window.ActiveXObject) {
  var aVersions = ["Msxml2.XMLHttp.5.0", "Msxml2.XMLHttp.4.0", "Msxml2.XMLHttp.3.0", "Msxml2.XMLHttp", "Microsoft.XMLHttp"];
  for (var i = 0; i < aVersions.length; i++) {
  try {
  xmlHttp = new ActiveXObject(aVersions[i]);
  break;
  } catch (e) {}
  }}
本项目介绍

应用场景

搜索框,模糊搜索等

执行结果

效果图

理论分析

  1. 在搜索框输入关键字
  2. 浏览器将关键字「异步」发送给服务器
  3. 服务器经过处理。将相应数据以 Json 格式返回客户端
  4. 浏览器接受服务器响应数据,解析之后使用 js 操作 dom 显示数据。

重点一:数据交互采用 ajax 方式
重点二:javascript 解析数据动态展示

XMLHttpRequest介绍

XMLHttpRequest 是一个API, 它为客户端提供了在客户端和服务器之间传输数据的功能

readyState 五种状态:

状态 描述
0 UNSENT (未打开) 代理被创建,但尚未调用 open() 方法。
1 OPENED (未发送) open() 方法已经被调用。
2 HEADERS_RECEIVED (已获取响应头) send() 方法已经被调用,并且头部和状态已经可获得。
3 LOADING (正在下载响应体) 下载中,responseText 属性已经包含部分数据。
4 DONE (请求完成) 下载操作已完成。

项目核心源码

ServletAjax

参考资料

Mozilla XMLHttpRequest 文档

Github Page

打开App,阅读手记
6人推荐
发表评论
随时随地看视频慕课网APP

热门评论

http://img.mukewang.com/594c88b7000116f306050362.jpg

http://img.mukewang.com/594c88bb000135ef10060354.jpg

上面是电商使用 www.92find.com的例子,部署一个搜索框智能提示也就5分钟,

可以让你把时间集中在更重要的核心业务上

http://img.mukewang.com/594c887e0001ff6305790274.jpg

实现一个智能提示功能需要JavaScript、ajax、数据库、jsp/php很多知识,

如果数据量大还需要特殊优化,一个小功能,花费太大精力不合适


但这是个可有可无的功能吗,肯定不是

对用户而言,可以有效降低输入成本,在面对输入框时,获得更多提示,不用那么迷茫和无助

对站长而言,可以优先推送网站的关键信息,等于多了一个广告位。


一所大学图书馆的搜索框智能提示,大约50万个词条(书名)

他们使用的是www.92find.com的搜索框智能提示免费产品,

只要一行javascript代码,就可以实现baidu、淘宝搜索框提示的全部功能

比如:拼音匹配、拼音前缀匹配、模糊搜索、智能容错,

还可以自定义提示词汇及其排序权重

你只需要准备好自己的提示词汇表就可以了,

无需编写程序,

五分钟(真的是5分钟)就可以在线配置拥有

主流搜索引擎都有的自动提示(自动补全)功能


查看全部评论