原始的ajax,在第一个页面定义如下:
1 function createAjax() { 2 var xmlhttp; 3 if (window.ActiveXObject) 4 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//对ie浏览器创建 5 else if (window.XMLHttpRequest) 6 xmlhttp = new XMLHttpRequest();//对其他浏览器创建 7 return xmlhttp; 8 } 9 //ajax_POST 10 function ajaxPOST() { 11 var xmlhttp = createAjax();//创建 12 var name = document.getElementById("name").value; 13 var pwd = document.getElementById("pwd").value; 14 xmlhttp.open("post", "get.aspx", true);//get/post, url , 是否异步传输 15 xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //post方式必须加上的一句 16 xmlhttp.onreadystatechange = function () { //状态变化时执行的函数
17 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 18 document.getElementById("result").innerHTML = xmlhttp.responseText; 19 } 20 xmlhttp.send("name="+name+"&pwd="+pwd);//发送 21 } 22 //ajax_GET 23 function ajaxGET() { 24 var xmlhttp = createAjax(); 25 var name = document.getElementById("name").value; 26 var pwd = document.getElementById("pwd").value; 27 xmlhttp.open("get", "get.aspx?name="+name+"&pwd="+pwd, true); 28 xmlhttp.onreadystatechange = function () { 29 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) 30 document.getElementById("result").innerHTML = xmlhttp.responseText; 31 } 32 xmlhttp.send(null); 33 }
onreadyStateChange事件是在readyState属性发生改变时触发的
readyState的值表示了当前请求的状态,在事件处理程序中可以根据这个值来进行不同的处理。
readyState有五种可取值0:尚未初始化,1:正在加载,2:加载完毕,3:正在处理;4:处理完毕。一旦readyState属性的值变成了4,就可以从服务器返回的响应数据进行访问了。
Status存储了服务器端返回的Http请求响应代码,它表示请求的处理结果.
Http状态码含义:
200 请求成功
202 请求被接受但处理未完成
400 错误请求
404 请求资源未找到
500 内部服务器错误
接着在data.aspx页面cs文件中的PageLoad中写如下代码:
1 Response.Clear(); 2 string name = Request.QueryString["name"]; 3 string pwd = Request.QueryString["pwd"]; 4 Response.Write("名字是:" + name + "<br />密码是:" + pwd); 5 Response.End();
这样,这个ajax程序就完成了。
有点麻烦是不是?倘若用JQuery的ajax,那么事情变得简单得多。
data.aspx.cs页面不动,将第一个页面改为:
1 $(function () { 2 $("#btn").click(function () { 3 var name = document.getElementById("name").value; 4 var pwd = document.getElementById("pwd").value; 5 $("#result").load("get.aspx?name=" + name + "&pwd=" + pwd, function (responseText, textStatus, XMLHttpRequest) { //JQueryAjaxGet 6 document.getElementById("result").innerHTML = responseText; 7 }); //JQueryAjaxGet 8 $("#result").load("get.aspx", { "name": name,"pwd":pwd }, function (responseText, textStatus, XMLHttpRequest) { document.getElementById("result").innerHTML = responseText; 9 }); //JQueryAjaxPost 10 }); 11 });
可以看到,不需要创建xmlHttp对象,只需要一个load()方法。
load()方法
对于get: url,回调函数(不需要返回success)
对于post: url,param,回调函数
回调函数function(responseTest,textStatus,XMLHttpRequest){},其中
responstTest //请求返回的内容
textStatus //请求状态:success,error
XMLHttpRequest //XMLHttpRequest对象