java原生的ajax怎么写_原生Ajax代码实现
Ajax
Asynchronous JavaScript And XML
異步:
指一段程序執行時不會阻塞其他程序執行,其表現形式為程序的執行順序不依賴程序本身的書寫順序 ,相反的則為同步,
自己理解的就是類似百度的搜索框輸入內容時的提示相關的內容功能,ajax可以在不刷新整體頁面的情況下,進行從后臺取值,并返回數據到頁面,其優勢在于不阻塞程序的運行,從而提升整體上的執行效率。
現實生活中,打電話是同步,發短信是異步
XMLHttpRequest
瀏覽器內置對象,用于在后臺與服務器通信,由此我們可以對頁面進行部分更新,更不進行刷新整個頁面的操作。
當以post方式請求時候,請求頭中設置了“Content-type”,“application/x-www-form-urlencoded”,get方式請求就不需要,
api詳解:
xhr.open(); 發起請求,可以是get或者post方式
xhr.setRequestHeader(); 設置請求頭
xhr.send(); 發送請求主體,get方式使用null作為主體
xhr.onreadystatechange(){} 監聽響應狀態
xhr.readyState = 0:UNSENT open尚未啟用
xhr.readyState = 1:OPENED open 已調用
xhr.readyState = 2:headers_received 接收到頭消息
xhr.readyState = 3:loading 接收到主體
xhr.readyState = 4:done 響應完成
xhr.status 表示響應碼 200 為正常
xhr.statusText 表示響應信息
xhr.getAllResponseHeaders() 獲得全部響應頭信息
xhr.responseText:響應主體
//瀏覽器兼容處理 undefined未定義的 因為只有ie瀏覽器中存在這個ActiveXObject對象
if(typeof ActiveXObject !=='undefined'){
alert("ie");
}else{
alert("ii");
}
IE瀏覽器創建ajax對象:
var xhr = new ActiveXObject("Microsoft.XMLHTTP");//最原始的方式 --
var xhr = new ActiveXObject("Msxm12.XMLHTTP");
var xhr = new ActiveXObject("Msxm12.XMLHTTP.3.0");
var xhr = new ActiveXObject("Msxm12.XMLHTTP.5.0");
var xhr = new ActiveXObject("Msxm12.XMLHTTP.6.0");//維護的最高版本
主流瀏覽器創建對象(Firefix火狐,Chrome谷歌,safari新浪,opera北歐瀏覽器,IE7以上)
var xhr = new XMLHttpRequest();
對服務器發起請求:
瀏覽器方式請求:打開瀏覽器,輸入地址欄,回車發起請求
常用狀態碼及其含義: 404 沒找到頁面(not found) 403 禁止訪問(forbidden) 500 內部服務器出錯(internal service error) 200 一切正常(ok) 304 沒有被修改(not modified)(服務器返回304狀態,表示源文件沒有被修改 )
瀏覽器與服務器建立連接 xhr.open(method, url, asynch); * 與服務器建立連接使用 * method:請求類型,類似 “GET”或”POST”的字符串。 * url:路徑字符串,指向你所請求的服務器上的那個文件。請求路徑 * asynch:表示請求是否要異步傳輸,默認值為true(異步)。
簡單的小程序 是以 post請求來發送的消息:
functiondd(){//創建對象
varxhr= newXMLHttpRequest();//設置請求行,創建新的http請求
xhr.open("post","/dd/d");//設置請求頭
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");//設置請求主體,發送請求信息給服務器
xhr.send("a=6&b=9");//接受服務器響應
xhr.onreadystatechange= function(){if(xhr.readyState==4){if(xhr.status==200) {
alert(xhr.responseText);
}
}
}
}
下面是java程序
packagedd;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.annotation.WebServlet;/*by:wzq
time:2017年11月16日*/@WebServlet(name= "d", urlPatterns = { "/d"})public class Dd extendsHttpServlet {private static final long serialVersionUID = 1L;protected voiddoGet(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
String parameter= request.getParameter("a");
System.out.println(parameter);
PrintWriter writer=response.getWriter();
writer.print("dsdsdsdsdsdsdsd");
writer.flush();
}protected voiddoPost(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {this.doGet(request, response);
}
}
下面是get請求方法是的ajax代碼。
functiondd(){//創建對象
varxhr= newXMLHttpRequest();//設置請求行,創建新的http請求
xhr.open("GET","/dd/d?a=6666",true);
xhr.setRequestHeader("Content-type","application/json; charset=utf-8");//設置請求主體,發送請求信息給服務器
xhr.send();//接受服務器響應
xhr.onreadystatechange= function(){if(xhr.readyState==4){if(xhr.status==200) {
alert(xhr.responseText);
}
}
}
}
總結
以上是生活随笔為你收集整理的java原生的ajax怎么写_原生Ajax代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dict keys 取最后一个_一步一步
- 下一篇: oracle alert日志点检,有哪些