我想用 AJAX,但是...

现在使用者对网页应用程序的要求越来越高,又要好看又要反应快。常见的做法是使用 AJAX 提升页面反应时间,但为何要用 AJAX 呢?

为何要用 AJAX

早期使用 JSP 技术时,当你输入完网页上的表单按下送出时,你会发现画面整个变空白,然後才出现後续的结果页面。这就是标准的浏览器与网页应用程序的互动方式,每次送出 HTTP 请求,应用程序就从服务器送来一个完整的页面,我们可以称它是「以页为单位的 (page-based)」沟通方式。而使用者必须等待完整页面收到後才能继续下一个动作,也就是使用者动作要跟 HTTP 请求同步 (synchronous)。

但当你使用 google 查询时,一输入第一个字,它就跳出一个下拉框列出推荐的相关词,你会注意到画面的其他部分并没有变化,画面也没有变成空白,只有多了下拉框。若你继续输入第二、三个字,google 会根据你的输入持续改变下拉框的推荐词,你不用等待画面的变化完成就可以输入下一个字。这背後所使用的技术就是 AJAX。简单来说就是透过 JavaScript 发出非同步的 (asynchronous) HTTP 请求到服务器去取得部份要更新的资料後,再由 JavaScript 去更动目前页面的部分内容。

采用 AJAX 有几个好处:

  • 不会阻碍使用者操作。
    因为浏览器发出的是非同步 HTTP 请求,使用者不需要等待请求回传仍可以操作当前的页面。
  • 加快网页反应速度。
    因为每次改动不需要重新载入整个页面,只调整部分变动的页面,使用者可以更快看到结果。而且每次服务器只需传送少量跟变动相关的的资料给浏览器,而不用传送整个页面的资料,因此可以降低传输量。
  • 浏览器不需安装额外的 plugin
    先前有些技术如 flash (现在已经不被支援)也有这种非同步更新效果,不过需要使用者安装额外的 plugin,而 ajax 需要的只是开启 javascript,每个浏览器都能做到,减少使用者的麻烦。

整体来说,就是能让使用者操作网页应用程序时能有桌上型应用程序的体验,大幅增进使用者体验(UX)。或是你曾听过单页应用程序(single page application),也是利用同样的技术打造而成。就现今技术而言,采用 WebSocket 也能得到同样好处。

采用 AJAX 的障碍

虽然 AJAX 能带来更好的使用者体验,但采用 AJAX 要克服许多技术上的障碍,首先要懂 JavaScript,并用它来操作 DOM ,这还加上浏览器相关的知识,若是你要画面好看些,你还得要懂 CSS 。再来要设计一个跟服务器沟通的模式与资料交换格式,而服务器端也要实作相应的程序跟浏览器沟通。但如果你或你的同事都是 Java EE 背景的工程师,多半都不熟悉前端相关的技术,甚至也没时间去熟悉前端技术,因为系统本身应用领域的问题(如金融、仓管等...)都解决不完了,那还有时间来弄这无关的技术呢?

使用 ZK UI 框架 就能帮你大量省去处理前端技术的烦恼。


<<:  [Day16] MySQL 简介

>>:  Day01 初探 iOS

Day 05 Introduction to AI

Summary What is AI? Machine learning Anomaly detec...

【D2】要下厨前需要准备锅具

简介厨房:Shioaji Shioaji是永丰证开发出来的Python API,用来给客户自行开发自...

DAY22 - 二分搜寻(一)

二分搜寻有随机访问的特性,在数组是有序的情况下,透过访问的元素,推测左右两侧的性质,展现较高的效率。...

【没钱买ps,PyQt自己写】Day 6 – 我们的第一个 output 手段 – Qlabel

看完这篇文章你会得到的成果图 前言 我们接下来的讨论,会基於读者已经先读过我 day5 文章 的架构...

MySQL 字串类型资料之基本操作

VARCHAR & CHAR VARCHAR(0-65535)/CHAR(0-255)差别於...