先建一个JS文件命名为Ajax.js
function CreateXMLHttpRequest()//这里是构造XMLHttpRequest对象的方法
... {
var xmlHttpRequest = null;//这里是大家都常用的IE,firefox中取得XMLHttpRequest对象的方法
try
...{
xmlHttpRequest = new XMLHttpRequest();
}
catch(e)
...{
try
...{
xmlHttpRequest=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
...{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttpRequest;
}
function AjaxSubmit(url,data,changeFunction)//url指定跳转页,data是要post的数据。changeFunction类似于函数指针
... {
var xmlHttpResquest = CreateXMLHttpRequest();
xmlHttpResquest.open("post",url,true);
xmlHttpResquest.setRequestHeader("content-length",data.length);
xmlHttpResquest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttpResquest.send(data);
xmlHttpResquest.onreadystatechange = function ()
...{
if (xmlHttpResquest.readyState == 4)
...{
try
...{
if(xmlHttpResquest.status == 200)
...{
alert(xmlHttpResquest.responseText);
changeFunction(xmlHttpResquest.responseText);//这里可以调用想要的函数
}
}
catch(e)
...{
alert("over");
}
}
}
}
比如我有一个页面叫Start.html或者Start.aspx
<
head
>
< title > Untitled Page </ title >
< script type = " text/javascript " src = " Ajax.js " ></ script >
</ head >
< body >
< script language = " javascript " type = " text/javascript " >
AjaxSubmit( " Ajax.aspx " , " nodesInfoTxt=hh " ,InitForAjax);
// Ajax.aspx是接受数据的页面,InitForAjax是本页面接受到回发数据后要执行的函数。其他的为数据。
function InitForAjax(str)
... {
alert(str);
}
</ script >
</ body >
< title > Untitled Page </ title >
< script type = " text/javascript " src = " Ajax.js " ></ script >
</ head >
< body >
< script language = " javascript " type = " text/javascript " >
AjaxSubmit( " Ajax.aspx " , " nodesInfoTxt=hh " ,InitForAjax);
// Ajax.aspx是接受数据的页面,InitForAjax是本页面接受到回发数据后要执行的函数。其他的为数据。
function InitForAjax(str)
... {
alert(str);
}
</ script >
</ body >
一般.net生成的aspx页面是这样写的
<%
...
@ Page Language="C#" AutoEventWireup="true" CodeFile="Ajax.aspx.cs" Inherits="Ajax"
%>
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
</ div >
</ form >
</ body >
</ html >
<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" >
< head runat ="server" >
</ head >
< body >
< form id ="form1" runat ="server" >
< div >
</ div >
</ form >
</ body >
</ html >
下面为了回传数据仅仅是数据而不是连同整个页面一起发送过来。
在Ajax.aspx页面这样这样写(这一句就足够了)
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Ajax.aspx.cs
"
Inherits
=
"
Ajax
"
%>
然后在它的后置类也就是Ajax.aspx.cs中这样写:
//
前面省略一些代码生成的东西
protected void Page_Load( object sender, EventArgs e)
... {
if (Request.Form["nodesInfoTxt"] != null)
string nodes = Request.Form["nodesInfoTxt"].ToString();
protected void Page_Load( object sender, EventArgs e)
... {
if (Request.Form["nodesInfoTxt"] != null)
string nodes = Request.Form["nodesInfoTxt"].ToString();
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "text/xml";
Response.ContentType = "text/xml";
Response.write("bye");
}
}
你在本函数结束处设一个断点,是否nodes就已经被赋值了呢?然后继续执行你的页面就会跳出一个bye的提示框。这就是Ajax异步传输。