获取Ajax对象
- XMLHttpRequest 对象:
我们写一个函数来创建,以后每次调用它就行:
function getAjax(){
if(XMLHttpRequest){
return new (XMLHttpRequest); //代表非IE浏览器
}else if(ActiveXObject){
return new ActiveObject("Microsoft.XMLHTTP");//IE浏览器
}else{
alert("no server..");
}
}
调用的时候运用到open和send方法:
var xhr=getAjax();
xhr.open("get","/Web_/getTime",true);//第一个是请求方式,第二个是文件访问位置(我这里是我servlet提交的位置)第三个“true”表示异步,false是同步
xhr.send();//向后台发送请求
服务器响应:
- responseText: 获得字符串形式的响应数据(因为是很多时候我们使用异步,这样网页加载快,就不一定会按正常流程获得数据,因为不知道它什么时候执行完,所以我们使用监听器监听其状态)
- code:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
function getAjax(){
if(XMLHttpRequest){
return new (XMLHttpRequest);
}else if(ActiveXObject){
return new ActiveObject("Microsoft.XMLHTTP");
}else{
alert("no server..");
}
}
function getTime(){
var xhr=getAjax();
xhr.open("get","/Web_/getTime",true);
xhr.send();//向后台发送请求
xhr.onreadystatechange=function(){ //用监听器监听
if(xhr.readyState==4){ //代表数据接收完毕
console.debug(xhr.responseText);//在控制台显示后台返回的响应数据
}
}
}
</script>
</head>
<body>
<button onclick="getTime()">click me</button>
</body>
</html>
使用JSON传递数据:
- JSON 比 XML 更小、更快,更易解析,
创建方式,code:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<p>
Name: <span id="jname"></span><br />
Age: <span id="jage"></span><br />
</p>
<script type="text/javascript">
var JSONObject= {
"name":"Bill Gates",
"age":56};
document.getElementById("jname").innerHTML=JSONObject.name
document.getElementById("jage").innerHTML=JSONObject.age
/*
JSON_1.age=20;//还可以修改属性
document.getElementById("jage").innerHTML=JSON_1.age
*/
</script>
</body>
</html>
后台很多时候传过来的是字符串的形式,但是字符串不能作为代码来执行,所以有时候我们要把字符串转换成可执行的脚本:
code:
//两种方式
var JSON_2='{"name":"steve","age":22}'//这个只是个字符串,但是格式符合JOSN
//console.debug(eval("("+JSON_2+")"));
console.debug(JSON.parse(JSON_2));