手记

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

前言

一直以来,使用 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

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分钟)就可以在线配置拥有

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


查看全部评论