什么是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. 工控中的windows

    今后的windows如何在工业应用中发展,之前的windows如何保证安全的运行,如果只专注于消费,生产上是否还需要windows,如果那样,windows真的只有windows了

  2. mouse的各种事件

    IE测试对象为IE9,不全 mousemove(元素内部移动) 鼠标在元素内部移动时触发,只要鼠标移动,即使只是又移动了一个像素,也会触发,这就意味着短时间内会触发多次事件 支持情况: js onmo ...

  3. UIActivityIndicatorView的详细使用(加载菊花)

    UIActivityIndicatorView实例提供轻型视图,这些视图显示一个标准的旋转进度轮.当使用这些视图时,最重要的一个关键词是小.20×20像素是大多数指示器样式获得最清楚显示效果的大小.只 ...

  4. 一个不错的PHP文件页面缓存类

    在php中缓存分类数据库缓存,文件缓存和内存缓存,下面我来给各位同学详细介绍PHP文件缓存类实现代码,有需要了解的朋友可参考. 页面缓存类 <?php    /*    * 缓存类    cac ...

  5. java 反射的实例

    JAVA反射机制是在运行状态中,对于任意一个类,都能够得到这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 ...

  6. PostConstruct注解

    应用场景:当你需要往Bean里注入一个其父类中定义的属性,而你又无法复写父类的属性或属性的setter方法时 public class UserDaoImpl extends HibernateDao ...

  7. openURL in APP Extension

    var responder = self as UIResponder? while (responder != nil){ if responder!.respondsToSelector(Sele ...

  8. 隐式intent启动电子邮件,不需要非电子邮件应用程序。

    Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setType("text/plain"); intent.put ...

  9. JS中获取页面单选框radio和复选框checkbox中当前选中的值

    单选框:单选框的name值全部相同 页面有一组单选框的元素<td><input type="radio name="radioid">满意< ...

  10. 在vim下,实现nesC语句的高亮

    默认的vim没有支持nesC语法高亮,给阅读源码带来不便.不过可以通过装NesC Syntax Highlighting插件来解决这个问题,具体操作如下: 步骤一:下载插件 在http://www.v ...