什么是AJAX

时隔半年,当AJAX再一次出现在我脑海中时,从最初的模糊到现在的越来越明确。那么究竟什么是AJAX?它和form表单提交有什么区别?

如果你使用过AJAX和表单提交的话,想必会发现一件很重要的事,那就是AJAX提交,页面不会刷新,并且可以选择同步或异步。

体验一把

form篇

我们发现传统的form提交,页面进行了跳转。

AJAX篇

可以看到通过AJAX发送的请求并没有使页面进行刷新跳转。

form表单提交页面为什么刷新

那么为什么form表单提交就会进行页面刷新呢,或者说它为什么要刷新。在我看来导致这个的根本原因是因为form没有提供一个回调,既然没有提供回调,我们就无法获取到服务器端返回的内容,因此form表单提交就类似于重新打开了一个页面。

那么为什么早期不提供这个回调呢?或许是因为当时没这个需求,只是觉得简单一点就好。然而在当今,这远远满足不了我们的需求,所以AJAX油然而生是必然的。

AJAX解决了什么

也许当初AJAX只是为了解决页面无刷新,但如果他想解决这个问题,肯定是不能再使用之前form那种方式来提交数据了,并且还得有办法让程序获取到服务器端返回的数据。因此AJAX提供了一个事件监听器,当服务器响应时,则会调用对应的函数。而我们需要做的就是将返回的数据通过DOM操作来更新页面,这样就达到了页面无刷新的效果。如果要说传统提交方式和AJAX方式有什么不同,那么他们的区别就是,传统方式请求的是整个文档,而AJAX提供了更多的选择,我们可以只请求所需的数据。

AJAX为什么要实现异步

我们可以先想象一下form表单提交为什么就没有异步这个功能?原因就是人家都跳转页面了,所以在form表单提交上使用异步这个功能就没有意义了。但对于AJAX则有很大的不同,如果说AJAX不使用异步,那么就必须等待服务器端响应,Javascript才能进行下一步操作,但这样傻傻的等下去肯定是不行的,因此异步也是必然的。

那它又是怎样使用的异步机制呢?也就是所谓的事件监听器,有了这个事件监听器,我们就可以去干其他的事,直到服务器响应,接着这个监听器就会将其指令传递给我们绑定的函数并且执行。

攻入Javascript,究竟什么是AJAX的更多相关文章

  1. Javascript&Ajax-深入浅出JSONP--解决ajax跨域问题

    Javascript&Ajax-深入浅出JSONP--解决ajax跨域问题 原理讲解: 链接地址:http://www.cnblogs.com/chopper/archive/2012/03/ ...

  2. JavaScript强化教程——jQuery AJAX 实例

    什么是 AJAX?AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML).简短地说,在不重载整个网页的情况下,AJAX 通过后台加载数据 ...

  3. SQL注入-攻入Apple ID钓鱼网站实录

    之前写的一篇利用SQL注入方式攻击钓鱼网站的文章,现在在博客园再分享一下. 下午,朋友发了一条朋友圈,内容大概这样: 大体就是她的iPhone丢了,收到了钓鱼短信,多么熟悉的套路,如下: 还好她比较机 ...

  4. JavaScript读二进制文件并用ajax传输二进制流

    综合网上多个教程,加上自己实践得出的方法,目前能够兼容谷歌.IE11.IE10. htmlbody里的内容,没什么特殊的. <div id="dConfirm"> &l ...

  5. 利用javascript、php和ajax实现计算器

    计算器和ajax部分: <?php /** * Created by PhpStorm. * User: Administrator * Date: 16-9-2 * Time: 上午9:20 ...

  6. JavaScript JSON timer(计时器) AJAX HTTP请求 同源策略 跨域请求

    JSON 介绍 1. JSON: JavaScript Object Notation 是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是 ...

  7. 《JAVASCRIPT高级程序设计》Ajax与Comet

    Ajax,是Asynchronous JavaScript + XML的简写,这一技术能向服务器请求额外的技术而无需卸载页面,会带给用户更好的体验.Ajax的核心是XMLHttpRequest对象.为 ...

  8. JavaScript(第三十二天)【Ajax】

    2005年Jesse James Garrett发表了一篇文章,标题为:"Ajax:A new Approach to Web Applications".他在这篇文章里介绍了一种 ...

  9. 【转】分享JavaScript监听全部Ajax请求事件的方法

    若Ajax请求是由jQuery的$.ajax发起的,默认情况下可以使用 jQuery的Global Ajax Event Handlers监听到Ajax事件,然而我遇到的却是用原生JavaScript ...

随机推荐

  1. redis 进阶

    1.一定要设置最大缓存大小并设置缓存策略 如果不设置最大缓存,在新添加数据时,如果超过最大内存回事redis崩溃! 设置方式:maxmemory 1GB 使用redis-cli登录后,使用info命令 ...

  2. ibatis resultMap 结果集映射

    1.结果集映射 就是将返回的记录,逐个字段映射到java对象上:如果数据库字段与java对象的成员变量名对应的话,则使用resultClas即可 2.实现 结合 ibatis初探这篇文章中提到的pro ...

  3. Response.Flush()

    Response.Buffer=True就是在缓存网页 访问网站一般是程序直接输出网页结果,或从缓存中读取网页结果2种方式.两种方式在速度上是有差异的 设置 Response.Buffer = Tru ...

  4. java解析XML获取城市代码

    运行前先导入dom4j架包,由于我们公司用的代理服务器所以下面我设置了代理ip,不需要的可直接忽略 package com.chengshidaima.tools; import java.io.Bu ...

  5. WPF(x:Null 使用)

    <Window x:Class="TestOfNull.MainWindow" xmlns="http://schemas.microsoft.com/winfx/ ...

  6. mysql 货币字段类型的存储

    loat类型是可以存浮点数(即小数类型),但是float有个坏处,当你给定的数据是整数的时候,那么它就以整数给你处理.这样我们在存取货币值的时候自然遇到问题,我的default值为:0.00而实际存储 ...

  7. java复用类

    java复用类英文名叫reusing classes  ,重新使用的类,复用的意思就是重复使用的类,其实现方法就是我们平常使用的组合和继承: 1.组合: has-a 的关系  (自我理解:组合就是我们 ...

  8. JS-DOM操作应用高级(一)

    表格应用--tBodies  tHead  tFoot  rows  cells <title>无标题文档</title> <script> window.onlo ...

  9. 更换arm-linux-gcc 4.3.2编译器

    先创建一个临时目录:mcx@mcx-virtual-machine:/home/work/tools$ mkdir tmp 解压到根目录:mcx@mcx-virtual-machine:/home/w ...

  10. bluehost 邮箱设置问题

    问题描述: e-elitech.com域名,elitechus.com域名均在阿里云注册,en.e-elitech.com解析到bluehost虚拟主机,www.elitechus.com也解析到bl ...