JQuery中Ajax的基本用法
一、JSON对象与JSON字符串
JSON:轻量级的数据交换格式
1、JSON对象:JSON对象就是键值对的集合,键与值之间用:分隔,多对键值对之间用,分隔
注意:JSON对象,要求键必须使用""包裹的字符串。''无效!!!
2、JSON字符串:将JSON对象,用字符串的形式进行包裹。
3、JSON对象与JSON字符串的相互转换:
① 对象-->字符串 JSON.stringify(obj)
② 字符串-->对象 JSON.parse(jsobj)
JQuery也提供了字符串转对象的方法:$.parseJSON(jsobj);
4、JSON数组:将多个JSON对象组成数组的形式存放
JSON数组可以和JSON对象相互嵌套,也就是说JSON对象的值可以是JSON数组。
.load():选中当前页面的一个DOM节点,并在当前DOM节点中加载一块HTML代码片段:
接受参数:
① 可以是一个HTML文件的地址,表示将整个的html文件加载到当前区域:
$("div1").load("test.html");
② 可以是一个html文件+各种选择器,表示选择该页的指定区域进行加载
$("#div1").load("test.html",h1,"ul",function(){alert("完成")});
二、$.ajax();是JQuery中最底层的ajax函数。参数接受一个大对象,用对象的键值对表示ajax请求的相关设置:
① type:表示Ajax请求的方法,可以get和post
② url:表示请求的后台URL地址
$.ajax({
type:"get",
url:"java1801.json",
data:{
"name":"张三"
},
async:true,
}
③ success:表示请求成功的回调函数。回调函数将接受三个参数,其中第一个参数是请求成功返回的数据。
success:function(data,textStatus,jqXHR){
var obj=JSON.parse(data);
console.log(obj);
console.log(data);
console.log(textStatus);
console.log(jqXHR);
console.log(jqXHR.responseText);
console.log(jqXHR.responseXML);
},
使用数据时需注意:返回的对象是JSON字符串,还是JSON对象。
④ error:表示请求失败时,执行的回调函数。
error:function(XMLHttpRequest,textStatus,errorThrow){
console.log(XMLHttpRequest);
console.log(textStatus);
console.log(errorThrow);
}
⑤ complete:请求完成后,无论成功失败都会执行的函数
complete:function(XHR,TS){
console.log(XHR.status);
console.log(TS);
}
⑥ statusCode: 接收一个对象,对象的键是各种status状态,对象的值表示每种状态码对应的回调函数。
[常见状态码]
200-请求成功
404-页面没找到
500-服务器错误
403-访问被拒绝
statusCode:{
200:function(){
console.log("请求成功");
},
404:function(){
console.log("页面没找到");
}
}
⑦ async:设为true表示异步请求(默认),设为false表示同步请求
⑧ data:请求时,向后台传递的数据,是一个对象类型,以键值对的形式分别表示name:value。
⑨ dataType:预期服务器返回的数据类型。常见json、text、html
⑩ timeout:设置请求超时时间。
三、JS同源策略
在JS中当请求其他文件时,要求被请求文件与当前文件,必须处于同一协议名、同一主机名、同一端口号下。
否则,请求将不能成功!!如果要请求非同源文件,必须进行跨域请求设置
$(function(){
$.get("java1801.json",{name:"zhangsan"},function(data){
console.log(data);
},"json");
四、ajax中用于检测页面所有Ajax的状态,并执行回调函数的方法
ajaxComplete(callback)
ajaxError(callback)
ajaxSend(callback)
ajaxStart(callback)
ajaxStop(callback)
ajaxSuccess(callback)
五、表单序列化为字符串
$("form input[type='button']:eq(0)").on("click",function(){
//var str=$("form:eq(0)").serialize();
//console.log(str);
var userName=$("form input[name='userName']:eq(0)").val();
var pwd=$("form input[name='pwd']:eq(0)").val();
var obj={
"userName":userName,
"pwd":pwd
};
console.log(JSON.stringify(obj));
});
六、表单序列化为数组
$("form input[type='button']:eq(1)").on("click",function(){
var arr=$("form:eq(0)").serializeArray();
var obj={};
arr.forEach(function(item,index){
obj[item.name]=item.value;
});
console.log(JSON.stringify(obj));
});
七、validate插件的使用
插件下载:http://www.runoob.com/jquery/jquery-plugin-validate.html
实例代码
<head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .cls{ color: red; font-size: 12px; } </style> <script src="js/jquery-1.10.2.js"></script> <script src="js/jquery.validate.js"></script> <script src="js/messages_zh.min.js"></script> </head> <body> <form id="form"> 用户名:<input type="text" name="userName"/><br/> 密码:<input type="password" name="password" id="pwd"/><br/> 确认密码:<input type="password" name="confirm_password" id="confirm_password"/><br/> 邮箱:<input type="text" name="email"/><br/> <input type="submit" value="提交"/><br/> </form> <script type="text/javascript"> $("#form").validate({ errorPlacement: function(error, element) { error.insertAfter(element); error.css({ "color": "red", "fontSize": "12px", "position":"absolute", "right":"0px" }) }, // errorClass:"cls", rules:{ userName:{ required:true, rangelength:[3,16] }, password:{ required:true, minlength:5 }, confirm_password:{ required:true, minlength:5, equalTo:"#pwd" } }, messages:{ confirm_password:{ equalTo: "两次密码输入不一致" } } }); </script> </body>