AJAX : Asynchronous JavaScript and XML   异步JavaScript和XML   (XML更多的是被JSON格式替代使用)

AJAX 只做一件事情:异步获取数据,更为重要的是还是JS对返回的数据进行操作。

异步获取数据极大地改善web与用户的数据交互(如下图左侧为传统web,右侧为借助AJAX实现数据交互)

 

一. js中AJAX的原理及步骤

1. 创建AJAX对象;

2. 设置请求方式,请求地址,是否异步或同步请求;  (POST方式需要设置数据编码请求头信息)

3. 发送数据进行AJAX请求;

4. 根据服务器返回状态码进行处理;

1. 创建AJAX对象

var xhr = null; //创建一个AJAX对象

if(window.XMLHttpRequest){ //不能直接判断XMLHttpRequest,如果不存在会报错,判断一个对象的属性,如果不存在,也不会报错

xhr = new XMLHttpRequest(); //标准浏览器

}else{

xhr= new ActiveXObject(‘Microsoft.XMLHTTP‘); //兼容IE6

}

可以封装一个创建AJAX对象的函数

//第一种方式

functioncreateXhr(){var xhr = null;if(window.XMLHttpRequest){

xhr= newXMLHttpRequest();

}else{

xhr= new ActiveXObject(‘Microsoft.XMLHTTP‘);

}returnxhr;

}//第二种方式

functioncreateXhr(){var xhr = null;try{

xhr= newXMLHttpRequest();

}catch(e){

xhr= new ActiveXObject(‘Microsoft.XMLHTTP‘);

}returnxhr;

}

2. 设置请求方式,请求地址,是否异步或同步请求;

xhr.open( method, url, [async] ) ;

method: 请求方式,主要有GET和POST (POST方式需要设置数据编码请求头信息setRequestHeader(header,value) )

url: 请求地址;

async: 是否异步请求,默认为true,

3. 发送数据进行AJAX请求;

xhr.send(content);

GET方式与POST方式的区别

GET: 只能传输字符串数据, 数据名称和数据值用等号连接,放置在url?后面,并用&进行连接;

POST: 可以传输文本,二进制,字符串等数据,数据名称和数据值用等号连接,利用send()方法发送,并用&进行连接;

GET方式请求与发送

xhr.open("GET", "server.php?username=xiaopeng&age=9"); //get方式的数据放置在url?后面进行发送

xhr.send();

POST方式请求与发送

xhr.open(‘post‘,‘server.php‘); //默认异步方式,可以不写

xhr.setRequestHeader(‘content-type‘, ‘application/x-www-form-urlencoded‘); //POST方式需要申明发送的数据类型

xhr,send(‘username=xiaopeng&age=9‘); //传输的数据通过send()方法发送

4. 根据服务器返回状态码进行处理;

onreadystatechange :当Ajax对象的状态码发生改变时所触发的回调函数

status :http的响应状态码

statusText :http的响应状态文本

reponseText :服务器端返回的数据(字符串形式)

responseXML :服务器端返回的数据(xml形式)

status :http的响应状态码有

0:表示对象已建立,但未初始化

1:表示对象已初始化,但未发送

2:已调用send方法进行请求

3:正在接收数据(接收到一部分)

4:接收完成

xhr.onreadystatechange = function() { //当请求状态改变的时候,触发事件

if (xhr.readyState===4) { //AJAX工作状态为4时,表示请求完成

if (xhr.status===200) { //http状态码为200时,表示服务器工作成功

alert (xhr.responseText);

}else{

alert("发生错误:" +request.status);

}

}

}

小实例:注册时检测用户名是否存在

//JavaScript代码

//绑定失去焦点事件

var oUser = document.getElementById("username");

oUser.οnblur= function(){//获取用户名

var username =oUser.value;//生成URL

var url = ‘demo.php?username=‘ +username;//创建AJAX对象

var xhr =createXhr();//初始化对象

xhr.open(‘get‘,url);//设置回调函数,可以设置在send()之前

xhr.onreadystatechange = function(){//当状态码为4,响应状态码为200时

if (xhr.readyState ==4 && xhr.status == 200) {//判断服务器返回情况

if (xhr.responseText ==1 ) { //这里根据后台设置接口判断

document.getElementById("result").innerHTML = ‘该用户名已被占用‘;

}else{

document.getElementById("result").innerHTML = ‘该用户名可以使用‘;

}

};

}

//发送AJAX请求;

xhr.send();

}

//php代码

//查询用户名是否存在

//获取数据

$username = $_GET[‘username‘];//连接数据库

mysql_connect(‘localhost‘,‘root‘,‘1234‘);//选择数据库

mysql_select_db(‘db_201404‘);//设置字符编码

mysql_query(‘set names utf8‘);//查询语句

$sql = "select * from admin where username=‘$username‘";$result = mysql_query($sql);//受影响行数

$count = mysql_num_rows($result);//关闭数据库

mysql_close();if ($count>0) {echo 1; //表示存在

}else{echo 2; //表示不存在

}

实例效果:

原文:http://www.cnblogs.com/Peng2014/p/4683403.html

js中报错 ajax不存在,AJAX相关推荐

  1. js中报错“Maximum call stack size exceeded“解决方法

    js中报错"Maximum call stack size exceeded"解决方法 参考文章: (1)js中报错"Maximum call stack size ex ...

  2. jq.1.10.2.min.js中报错最后一行得解决办法

    最早引入:http://www.htmleaf.com/js/jquery/1.10.2/jquery.min.js 可能是引入得jq有问题,引入正确的就好了. 换个官方得版本:https://cod ...

  3. chrome浏览器,调试详解,调试js、调试php、调试ajax

    1.可以看到js报错 2.可以看到php报错 3.可以看到ajax返回的信息,以及报错情况 4.可以看到调用了那些内容以及顺序 5.可以调试js代码 6.可以查看session等等 功能非常之强大. ...

  4. [js]jquery里的jsonp实现ajax异源请求

    同源请求-jquery <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/ ...

  5. 本地跨域处理ajax,Node.js配合node-http-proxy解决本地开发ajax跨域问题

    情景: 前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法: 1. 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境,麻烦) 2. ...

  6. JS Ajax 和 jQuery Ajax : 异步自动填充

    第四十八章 JS Ajax 和 jQuery Ajax : 异步自动填充 48.1 案例介绍 48.2 案例相关技术 48.2.1 JSON数据 48.2.2 JSON-LIB工具 48.3 案例分析 ...

  7. ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP

    AJAX简介: ajax背景: 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API,最早出现在谷歌 ...

  8. java ajax教程_Jquery ajax基础教程

    jQuery的Ajax带来了无需刷新的web页面革命.这里就详细介绍一下jQuery所涉及到的Ajax操作.(无需特殊说明,均需要有服务器配置,这里本人用的是Tomcat 7) 1.基于请求加载文件数 ...

  9. vue-resource ajax跨域,ajax 跨域请求 vue-resource jsonp跨域

    aj体朋几一级发等点确层数框的很屏果行4带域ax 跨域请求 vue-resource j直分调浏器代,刚求的一学础过功互有解小久宗点差维含数如数围请sonp跨域 最近在学习vue.js 碰到个ajax ...

最新文章

  1. 训练和验证准确性_通过沉浸式虚拟现实观察动作增强运动想象训练
  2. Hibernate的配置文件 Hibernate.cfg.xml与xxx.hbm.xml
  3. ROS系统 动作编程
  4. mysql 日志文件 自动_自动恢复MySQL数据库的日志文件思路分享及解决方案
  5. python程序设计方法_Python程序设计现代方法
  6. Linux定时任务:crontab安装与检查
  7. node全局对象 文件系统
  8. Newtonsoft 六个超简单又实用的特性,值得一试 !
  9. Redis 实战案例总结
  10. 模拟电视原理(笔记)
  11. Android 语音助手
  12. UniApp 获取屏幕分辨率
  13. 发票查验一直网络异常、无法显示验证码、点击查验没反应怎么办?
  14. 计算机组成原理课后答案(唐朔飞第二版)
  15. ps4看直播 HTML,ps4直播教学 怎么样才能直播
  16. Open CASCADE Technology(OCCT)概述
  17. LEETCODE--mysql查询第二高薪水
  18. 《Java Web程序设计基础教程》简介
  19. 2020秋季《大数据与物联网》期末答案参考
  20. 构造拉丁方阵和正交拉丁方阵组

热门文章

  1. json-server的使用
  2. 为什么SimpleDateFormat不是线程安全的?
  3. 阿里云轻应用服务器 宝塔面板 mongodb 配置外网连接 其一 基础配置
  4. jdk8 list转Map
  5. 毫米波雷达_最新的7个毫米波雷达应用案例
  6. 1.1 Machine learning: what and why?
  7. c语言安卓贪吃蛇代码下载,C语言贪吃蛇代码
  8. 【OS学习笔记】三十七 保护模式十:中断和异常的处理与抢占式多任务对应的汇编代码----主引导扇区代码
  9. HDU 1231 最大连续子序列 (动态规划)
  10. LCA模板(数剖实现)