首先说说什么时候该用GET,什么时候该用POST。GET方法是从服务器获取数据,对传送的数据是不加密的,安全性较低,能传送的数据量小,但效率高,当你需要从数据库读数据的时候,一般用GET方法。POST方法传送的数据量大,同时对发送的数据进行加密,安全性较高,所以,当你需要更新服务器端的数据的时候,用POST方式就比较合适了。
Ajax的GET的方法:
当进行用户注册或用户信息修改的时候,需要检查新的用户名是否已经被使用;
function GetAjax() {
var Ajax;
if (window.ActiveObject)
Ajax = new ActiveXObject("Microsoft.XMLHTTP");
else
Ajax = new XMLHttpRequest();
return Ajax;
}
function checkUserName() {
var userName = document.getElementById("name").value;
if (userName != "") {
var Ajax;
Ajax = GetAjax();
Ajax.onreadystatechange = function() {
if (Ajax.readyState == 4) {
// alert(Ajax.responseText)
if (Ajax.responseText == "0") {
document.getElementById("ninfo").innerHTML = "用户名已经被使用!";
document.getElementById("name").value = "";
document.getElementById("name").focus();
}
else if(Ajax.responseText=="1")
document.getElementById("ninfo").innerHTML = "用户名可用!";
}
}
Ajax.open("GET", "Ashx/checkname.ashx?n=" + userName + "&type=1", true);
Ajax.send();
}
}
AJAX 的POST方法:
当用户已经确定修改或注册的时候,需要把数据添加进数据库,这时候为安全性考虑,用GET方式就不合适了。
function AjaxPost(name, pwd, tel, right) {
if (name != "" && pwd != "") {
var Ajax = GetAjax();
var params = "n=" + name + "&p=" + pwd + "&t=" + tel + "&r=" + right;
Ajax.onreadystatechange = function (){
if (Ajax.readyState == 4) {
if (Ajax.status == 200)
if (Ajax.responseText == "1") {
... code...
}
else
document.getElementById("sure").innerHTML = "添加用户失败!请稍后重试!";
}
}
Ajax.open("POST", "Ashx/addmanager.ashx", true);
Ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
Ajax.setRequestHeader("Content-length", params.length);
Ajax.setRequestHeader("Connection", "close");
Ajax.send(params);
}
}
AJAX的POST方法的使用与GET方法有几点不同;
首先,需要设置必须的http请求头部,Ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
这条代码设置了http请求的Content-Type,当你将Content-Type设置application/x-www-form-urlencoded后,用网络抓包工具是不能直接获取传送的参数的;当你使用最原始的<form mothed=post></form>方式提交数据时,用网络抓包工具抓到的包中,http请求的Content-Type类型就是application/x-www-form-urlencoded。
其次,GET 的方式的Ajax.send()参数为空,需要发送的数据可以直接写在url后面,以url?param=...的方式发送,而POST的方式发送的数据必须作为send()方法的参数进行发送,比如:Ajax.send(params)。