对浏览器的要求:
var request;
if (window.HttpRequest){
request = new XMLHttpRequest(); //IE7+ , Firefox , Chrome , Opera , Safari.....
} else {
request = new ActiveXObject("Microsoft.XMLHTTP"); // IE6 , IE5
}
//在Ajax中,获取用户的输入值是用: .value; 而在jQuery中,是: .val();
异步处理 :
发送请求操作:
1. 创建XMLHttpRequest 对象
2. 使用open方法中参数 open(method,url,async)
method:发送数据类型 :get 或 post
URL:发送地址
async:是否使用异步 一般设置为 true
3.使用send(String) 将数据发送至服务器
注: 使用get方法不用给参数
eg:发送请求:
request.open("GET","url",true);
request.send();
request.open("POST","url",true);
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send("发送的数据");
获取响应:
requestText: 获取字符串形式的响应数据。
responseXML: 获取XML形式的响应数据。
status 和 statusText: 以数字和文本形式返回HTTP状态码。
getAllResponseHeader():获取所有的响应报头。
getResponseHeader() : 查询响应中的某个字段的值; 注:这个要加参数
监听 readyState属性的变化:
0代表:请求未初始化 , open还没调用
1代表: 服务器连接已建立 , open已经调用了
2:请求已接收,也就是接收到头信息了
3:请求处理中,也就是接收到响应主体了
4:请求已完成,且响应已就绪,也就是响应完成了
eg:
//点击触发:
document.getElementById(" ").onclick = function(){
//要进行的异步操作。。。
}
request.onreadystatechange = function(){
if(request.readyState == 4 && request.status == 200){ // 返回的状态码
//做一些事情
request.responseText
}
}
json 在线校验工具:jsonlint.com
json 格式是以键值对的形式组成 (键 和 值 都加双引号)。
eg : var jsondate = '{"staff" : [{"name":"张三","age":"20"},{.......},{.......}]}';
方式一:
var jsondata = 'json格式';
var jsonobj = eval('(' + jsondate + ')');
alert(jsonobj.staff[0].name); // alert输出 张三
方式二:
var jsondate = 'json格式';
var jsonobj = JSON.parse(jsondate);
alert(jsonobj.staff[0].name);
建议使用方式二,方式一如果把 “age”: “张三” 改成 “age”:“alert(123)” ,则会先弹出 123 ,再弹出 张三。
所以说方式一,不安全。除非自己能保证json的值是在自己的控制范围。
JQuery:
在线的jquery库:
<script src="http://apps.bdimg.com/libs/jquery/1.11.1/jquery.js"></script> //1.11.1 是版本号,可以改写成现有的版本号。
界面加载完毕执行:
$(document).ready(function(){
//当鼠标点击事件,执行异步
$("#id选择器").click(function(){
//异步操作
$.ajax({
//执行异步 GET请求
type:"GET",
url:" .... ",
dataType:"json",
success:function(data){ //成功执行 因为 dataType 是json, 其实对data 已经做出了解析。
//如果成功,编写逻辑
if(data.success) {
$("#id选择器").html("成功");
} else{
$("#id选择器").html("失败");
}
},
error:function(jqXHR){ //失败执行 通过jqXHR对象,直接拿status。
alert("发生错误: " + jqXHR.status);
}
})
})
});
//POST请求
$.ajax({
//执行异步 POST请求
type:"POST",
url:" .... ",
dataType:"json",
data:{ //post 用data传数据
//填写表单中的所有值
eg: name:$("#id选择器").val(),
....... //这里拼接的是json格式,会自动转码
},
success:function(data){ //成功执行 因为 dataType 是json, 其实对data 已经做出了解析。
//如果成功,编写逻辑
if(data.success) {
$("#id选择器").html("成功");
} else{
$("#id选择器").html("失败");
}
},
error:function(jqXHR){ //失败执行 通过jqXHR对象,直接拿status。
alert("发生错误: " + jqXHR.status);
}
})
})
});
type : 类型 ,"POST" 或 "GET" ,默认为 "GET". eg: type
URL : 发送请求的地址。
data : 是一个对象 , 连同请求发送到服务器的数据 。
dataType : 预期服务器返回的数据类型。 如果不指定,jQuery将自动根据HTTP包MIME信息来智能判断,
一般我们采用json格式,可以设置为"json"。
success : 是一个方法,请求成功后的回调函数。传入返回后的数据,以及包含成功代码的字符串。
error : 是一个方法,请求失败时调用此函数。传入XMLHttpRequest对象。
js获取 checkbox 的例子:
var student = $("input[name='ids']:checked").serialize(); var storeId = $("#storeId").val(); $.ajax({ type : "post", url : 'homePageManager/homePageCategory/save?storeId='+storeId, dataType : "json", //返回数据形式为json data : ids = student , success : function(result) { $.each(result, function(index, val) { $("#"+val.categoryId).prop("checked", "checked"); }); $checkbox.removeProp("checked"); $("input[name='status']").bootstrapSwitch(); } })
如有错误,请大神指出。。。。。