AJAX 是與服務器交換數據並更新部分網頁的藝術,在不重新加載整個頁面的情況下。
XMLHttpRequest 用於在後臺與服務器交換數據。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
客戶端
function invitePlayer(){
//Ajax發送邀請
inviting=true;
canBeInvited=false;
var xmlhttp;
if(window.ActiveXObject){
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}else{
// code for IE6, IE5
xmlhttp=new XMLHttpRequest();
}
document.getElementById("show").innerHTML="at the begin";
//當xmlhttp.send();調用此方法 ,分別調用4次 就是readyState有4個狀態
xmlhttp.onreadystatechange=sendXMLHttp;
document.getElementById("show").innerHTML="setfunc";
xmlhttp.open("GET","http://localhost:8080/ch02/invite_player.jsp?account=c"+"&id=g",true); //需要修改
document.getElementById("show").innerHTML="open";
xmlhttp.send();
document.getElementById("show").innerHTML="send";
alert("At the end");
}
function sendXMLHttp(){
alert("getResponese");
if(xmlhttp.readyState==4&&xmlhttp.status==200){
// xmlhttp.readyState=0 未初始化 : 1 讀取中; 2 已讀取; 3 交互中; 4完成;
//xmlhttp.status: 404 表示文件沒有找到;200 服務器數據返回成功; 0 表示本地數據返回成功;
//xmlDoc=xmlhttp.responseXML;
var response=xmlhttp.responseText;
if(response=="OK"){
startGame();
}
}
}
服務器端(僅僅作爲測試):
<%@page contentType="text/html;charset=gbk" %>
<%@page language="java" import="java.sql.*" %>
<%
//設置提交表單的中文編碼
request.setCharacterEncoding("GBK");
String account,invite_id;
account=request.getParameter("account");
invite_id=request.getParameter("id");
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
out.print("OK");
%>
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
在Ajax的返回值中總會莫名其妙地帶着幾個換行,可以使用以下方法,進行處理
在jsp頁面中每一個回車換行都會產生一個空行,
在你要輸出你想要的內容之前調用out.clear();