1:ajxa是调用浏览器异步引擎去向服务器发送请求的
2:ajax开发步骤:
1:new 对象
var xmlHttp = new XMLHttpRequest();
2:绑定readystate改变函数(回调函数的实现原理就是绑定readystate为正确响应)
xmlHttp.onreadystatechange= function(){
if(xmlHttp.readyState == 4 && xmlHttp.status == 200){
执行的回调函数
}
}
3:配置参数
xmlHttp.open(“请求方式”,”请求地址”);
xmlHttp.send();发送请求,可以内置请求变量
1:对于GET请求直接在open请求地址中拼接请求变量,并在send(null);
2:对于POST请求,要设置请求头,格式是不变的
xmlhttp.setRequestHeader(“content-type”,
“application/x-www-form-urlencoded”);(这个必须在open()后)
然后再send(“name=”+传递的值)
3:ajax能接受的返回类型有
responseText和responseXML
由于XML比较复杂,所以衍生出一种基于文本传输的数据格式,那就是JSON(本质就是一种文本,可以传化为任何语言的对象),
4:在js中获取json的原理是同eval函数来改变Text为对象
例如:var json = eval(xmlhttp.responseText);
这样有时转换不了,所有两边加上小括号,保证能转换成功。
var json = eval(“(“+xmlhttp.responseText+”)”);
5:ajax省市级联动
1:后台需要将父子级需要的所有信息封装早JSON中,后台是LIST类型
2:在js中定义一个全局变量接受JSON
var json;
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function(){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
json = eval("(" + xmlHttp.responseText + ")");
var province = document.getElementById("province");
for(var i=0;i<json.length;i++){
var provinceName = json[i].name;
var option = document.createElement("option");
option.text = provinceName;
province.add(option);
}
}
};
3: for(var i=0;i<返回数组的长度;i++) {
var provinceName = json[i].name;
var option = document.createElement("option");
option.text = provinceName;
province.add(option);
}
循环获取省份名称,加到province的select中
4:子级内容增加的实现:
在父级属性上增加一个οnchange=”fillCity()”
再实现该方法
var province = document.getElementById(“province”);
var city = document.getElementById(“city”);
1:获取父子级select
var provinceName = province.options[province.selectedIndex].text;
2:获取选中的province
for(var i=0;i