初识Ajax
来源:互联网 发布:画家知一作品图片 编辑:程序博客网 时间:2024/06/08 09:56
Ajax是什么
Ajax即Asynchronous Javascript And XML(异步javascript和XML),是一种用于创建快速动态网页的技术,可以与服务器交互数据并更新部分网页;
XMLHTTPRequest对象(XHR)与服务器实现数据交换
兼容ie5/6
var xmlhttp;if (window.XMLHttpRequest) {//适用于IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); //创建 XMLHttpRequest 对象 }else {//兼容IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); //创建 XMLHttpRequest 对象 }xmlhttp.onreadystatechange=function()//在readystatechange属性发生变化的时候触发事件 { if (xmlhttp.readyState==4 && xmlhttp.status==200) //readyState==4请求已完成&&status==200请求成功 {可以去实现自己需要的功能} }xmlhttp.open("POST","/ajax/demo_post2.asp",true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");xmlhttp.send("fname=Bill&lname=Gates");
XHR发送请求
xmlhttp.open(method,url,async);
//method值为get/post
//async请求同步或异步,true/false
xmlhttp.send();
xmlhttp.open("GET","test1.txt",true);xmlhttp.send();//get方法发送。send里不加参数
xmlhttp.open("POST","ajax_test.asp",true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//添加http头,头名称-头的值xmlhttp.send("fname=Bill&lname=Gates");//post方法发送,send(strind)
获取服务器响应
responseText:获取字符串形式的响应数据;
responseXML:获取XML形式的相应数据;
status/statusText:以数字/文本形式返回HTTP状态码;
getAllResponseHeader():获取所有的响应头部,传参;
getResponseHeader():获取响应中某个字段的值;
readyState属性
0 请求初始化,open还没被调用
1 服务器连接已经建立,open已经调用了
2 请求已接收,也就是接收到响应头部
3 请求处理中,也就是接收到响应主体
4 请求已完成,且响应就绪,即响应完成
json
json全称javascript object notation(js对象表示法),是一种轻量级的存储和传输数据的格式,通常用于从服务器端向网页传递数据;
json是javascript语言,独立于语言和平台,但是json格式仅仅是一个文本,可以被任何编程语言解析,目前 .jsp .php .net都支持json,前提是要按json规则来;
json对比XML
json的长度比xml短小,网络传输中减少带宽;
json读写速度快;
json可以使用js内建的方法eval()直接进行解析,转换成js对象,很方便;json数据书写格式:名称/值对;(”名称”:”值对”)
json值可以是:数字,字符串,逻辑值(true/false),数组(在[方括号]中),对象(在{花括号}中),null(没有值);解析json的方法
eval()/JSON.parse()
使用eval是危险的,因为eval()函数可以编译任何的js代码,用它执行第三方的json数据如果里面包含恶意代码被eval执行,可能导致不好的结果,除非eval的参数是可控的,否则不要用eval;
尽量使用JSON.parse()解析字符串本身,该方法捕捉json中的语法错误;(JSON解析器只能JSON文本,而不会编译脚本,而且JSON解析器的速度更快)
//在浏览器控制台运行查看两种方式 var jsondata = '{ "staff":[ {"name":"yang","age":"54"}, {"name":"yang2","age":"52"}, {"name":"yang1","age":"51"} ] }'; var jsonobj = eval('(' + jsondata + ')'); //使用eval(两选一) var jsonobj = JSON.parse(jsondata); //使用JSON.parse(两选一) alert(jsonobj.staff[0].name)**json在线校验工具:JSONlint**
<script>var txt = '{ "employees":[' + '{"firstName":"John","lastName":"Doe" },' + '{"firstName":"Anna","lastName":"Smith" },' + '{"firstName":"Peter","lastName":"Jones" } ]}';//创建包含JSON语法的js字符串;var obj = eval ("(" + txt + ")");//使用eval()方法解析字符串var obj = JSON.parse(txt);//使用JSON.prase()方法解析字符串document.getElementById("fname").innerHTML=obj.employees[1].firstName document.getElementById("lname").innerHTML=obj.employees[1].lastName </script>
Jquery Ajax
$.ajax({name:value,name:value,name:value,...})
常用的名称/值对
async 布尔值,表示请求是异步处理,默认为true,一般不用设置
type 规定请求的类型(GET/POST),默认为GET
data 规定要发送到服务器的数据
url 规定发送请求url,默认是当前页
success(result,status,xhr) 当请求成功时运行的函数
error(xhr,status,error) 请求失败时运行的函数
complete(xhr,status) 不论请求成功失败,只要请求完成便可调用函数
dataType 预期的服务器响应的数据类型
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>//使用百度静态资源库里的jquery,使用了cdn加速<script> $(document).ready(function(){ $(id).click(function(){ $.ajax({ type:"GET", url:"url", dataType:"json", success:function(data){ if(data.success){ ... ... }else{ ... ... } }, error:function(xhr){ alert("发生错误"+xhr.status) } })//GET方法 $.ajax({ type:"POST", url:"url?number="+$("").val(), dataType:"json", data:{ name:$("").val(), ages:$("").val() }, //POST传输数据方法; success:function(data){ if(data.success){ ... ... }else{ ... ... } }, error:function(xhr){ alert("发生错误"+xhr.status) } })//POST方法 }) }) //在DOM加载完成之后,在页面内容加载之前执行</script>
- 初识AJAX
- 初识AJAX
- 初识ajax
- 初识AJAX
- 初识AJAX
- AJAX初识
- 初识ajax
- 初识Ajax
- 初识Ajax
- 初识Ajax
- 初识Ajax
- 初识AJAX
- 初识AJAX
- 初识AJAX
- 初识Ajax
- 初识Ajax
- Ajax初识
- 初识Ajax
- 新内核版本ioctl的变化 _IO, _IOR, _IOW, _IOWR 幻数的理解
- 负载均衡与集群之apache+tomcat
- git git bash git shell的区别
- myeclipse2015逆向工程错误An internal error occurred during: "Generating Artifacts". java.lang.NullPointerE
- 广播的概念与定义广播接收者
- 初识Ajax
- 链表与数组的优点
- vs数据库访问出现Object reference not set to an instance of an object. 错误解决办法
- java 连接mysql
- Majority Element
- 软件需求分析与IT创新
- C++命名空间
- 第一行代码 读笔③ (Layout ListView)
- bnu 49100:超级线段树