互聯網編程-Ajax

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");
%>


在嘗試的過程中,發現按照w3c創建XMLHttpRequest的方法,在IE和Eclipse的瀏覽器插件都可以正常執行,但是在Chrome中會爆出不認識ActivieXObject的錯誤,不可理解啊。。。。修改成上面代碼的創建方式之後,在chrome也可以正常執行了。

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();

這樣還不行,就:
xmlHttp.responseText.replace(/\r\n/g,"");


發佈了23 篇原創文章 · 獲贊 2 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章