ajax只是一个称呼
记得刚入行的时候,看到ajax,即异步的javascript和xml这样一个概念,一点感觉都没有。参加工作前的第一轮面试,被问到有没有自己实现过ajax,我觉得自己实现肯定很复杂吧。
- 从名字理解
从名字说起,“异步的javascript和xml”,其中javascript是一种流行于前端页面的语言,它可以操作html页面的各种元素,让静止的页面(静态页面)动起来(动态页面);而xml,一种树形数据格式,用来传输数据用的。就这样,最有迷惑的是异步的,什么叫做异步的?举个生活中的栗子。你本来和小明约好放学一起回家的,结果半路小明被小红叫去修灯泡了,于是你就不等小明,自己回家了。不一起走了,这就是异步。这时候小明就是ajax,他去小红家修灯泡,就好比ajax向后台发起请求,虽然他得等到修完灯泡才能回家,当然他也可以选择不回家,而这对你没影响,你就好比是页面的其他部分,还是该干嘛干嘛。
- 从效果理解
ajax的出现最初只为一个目的——页面的局部刷新(整体页面不动,局部变动)。如何做到的?页面向服务器发起一个请求,然后接收到服务器返回的数据并将数据渲染到当前页面,如此而已。动态渲染,这不就是JS最擅长的吗。发送请求和获取数据用到的是JS的XMLHttpRequest对象。所以说,ajax,就是给一段javascript代码起了个名字。
- 从核心理解
要理解ajax,不得不介绍XMLHttpRequest对象,是因为XMLHttpRequest是ajax的核心,也是几乎是ajax的全部。弄懂了XMLHttpRequest,就明白了ajax。什么是XMLHttpRequest对象?
1.XMLHttpRequest 对象用于在后台与服务器交换数据。2.所有现代的浏览器都支持 XMLHttpRequest 对象。
方法:
open(method,url,async) 规定请求的类型(GET/POST)、URL 以及是否异步处理请求。
send() 将请求发送到服务器
属性:
responseText 获得字符串形式的响应数据。
readyState 存有 XMLHttpRequest 的状态。从 0 到 4 发生变化。(0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 请求处理中 4: 请求已完成,且响应已就绪)
status 响应状态码(常见的如:200代表请求成功,404代表未找到页面)
onreadystatechange 存储函数(或函数名),每当 readyState 属性改变时,就会调用该函数。
- 从源码理解(XMLHttpRequest对象的使用)
----------------------------创建XMLHttpRequest对象-----------------------------------------
var xmlhttp;
if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
----------------------------定义成功接收数据后进行的操作,渲染页面--------------------------------------------------
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
}
-----------------------------设置XMLHttpRequest参数并发送请求-----------------------------------------
xmlhttp.open("GET",url,true);
xmlhttp.send();
ajax核心代码短短十三行搞定。
ajax只是一个称呼的更多相关文章
- 一点关于Ajax和一个等待图标的显示
一点关于Ajax和一个等待图标的显示 1.首先Ajax是asynchronous Java-Script and XML的简写.翻译过来就是异步的JS和XML. 2它的优点就是能不更新页面的情况下,得 ...
- struts2学习笔记--使用servletAPI实现ajax的一个小Demo
这个例子是点击网页上的一个button,然后调用action,使用response项前台打印"哎呦 不错哦",当然是以异步形式实现. jsp页面: <head> < ...
- Nodejs 之Ajax的一个实例(sql单条件查询&并显示在Browser端界面上)
1.Broswer端的Ajax <!DOCTYPE html> <html> <head lang="en"> <meta charset ...
- 原生Ajax用法——一个简单的实例
Ajax全名(Asynchronous(异步) JavaScript and XML )是可以实现局部刷新的 在讲AJax之前我们先用简单的实例说一下同步和异步这个概念 /*异步的概念(就是当领导有一 ...
- Ajax的一个实例及代码
这是用ajax做的一个小小的应用!当选择menu1的时候,会出来menu里面所有的内容.同理对于menu2.多的不说,代码如下: 首先是inner.html文件 <html><hea ...
- 用php和ajax写一个省市区的三级联动,实现地区的下拉选择
要实现这个页面的三级联动,我们需要建立三个php文件,第一个php文件我们导入jQuery文件,里面嵌入JavaScript:第二个php文件我们做一个php的处理页面,里面引入我们封装好的数据库类文 ...
- $.ajax里一个中文全角逗号引发的惨案
昨天,在制作一个页面时,突然发生一件不可思议的事情--JS失效了! 确实让人匪夷所思,我记得饭前还是正常运作的. 于是慢慢的缩小范围,把下午刚加的语句删掉,删完了页面就正常了. 于是被删除的这部分代码 ...
- AJAX - 实现一个简单的登录验证
/**Ajax 编写流程 * 1.创建 XHR (XMLHttpRequest)对象 var xmlHttpReq = false; // var xmlHttpReq = ""; ...
- 使用html,JavaScript,ajax写一个小型实例
//1.创建受捐单位数组 var arrOrgData = [ { "Id": 1, "OrgName": "红十字会" }, ...
随机推荐
- zoj 3878 Convert QWERTY to Dvorak【好坑的模拟】
Convert QWERTY to Dvorak Time Limit: 2 Seconds Memory Limit: 65536 KB Edward, a poor copy typis ...
- 使用GruntJS链接与压缩多个JavaScript文件
使用GruntJS链接与压缩多个JavaScript文件 自己写了个简单的HTML5 Canvas的图表库,可以支持饼图,折线图,散点图,盒子图 柱状图,同时支持鼠标提示,绘制过程动画效果等.最终我想 ...
- 【python自动化第三篇:python入门进阶】
鸡汤: 多学习,多看书. 推荐书籍:<追风筝的人>,<林达看美国>,<白鹿原> 本节知识点 集合及其操作 文件操作 函数与函数式编程 递归 一.集合及其操作 集合( ...
- CUDA8.0+VS2013的安装和配置
首先声明,本文借鉴自:http://blog.csdn.net/u011314529/article/details/51505029 所以,可参考链接的博文.但原文有个瑕疵就是,cublas.lib ...
- QinQ封装及终结详解
以下内容摘自正在当当网.京东网.卓越网.互动出版网预售,即将正式发售的<华为交换机学习指南>一书(全书近千页).本书是由华为官方授权,国内第一本,也是唯一一本华为交换机权威学习指南,是华为 ...
- GridControl 无数据时显示信息
图例: 主要代码如下: 说明:给GridView添加事件gv_CustomDrawEmptyForeground private void gv_CustomDrawEmptyForeground(o ...
- 屌丝程序猿赚钱之道 之APP
假设你已经通过APP赚到了钱,那么本文对你而言没有意义.倒是希望你可以给我们诸多建议. 通过制作APP或者说手机应用赚钱,相信是非常多程序猿希望做的事情.也确实有一些人通过APP赚到了钱. 对于程序猿 ...
- SCTP 关联的建立和终止
与TCP一样,SCTP也是面向连接的,因而也有关联的建立与终止的握手过程.不过SCTP的握手过程不同于TCP. 四路握手 建立一个SCTP关联的时候会发生下述情形(类似于TCP). (1)服务器必须准 ...
- C++中各种数据量类型转换
要在Unicode字符集环境下把CString转化为char* 方法: CString str = _T("D://校内项目//QQ.bmp");//////leo这个NB 可以 ...
- Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例
1. 通过多线程改进刚才的聊天程序,这样我就可以实现在一个窗口发送和接收数据了 2. 代码示例: (1)SendThread.java,如下: package com.himi.udpDemo2; ...