先建一个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的数据。changeFu
nction类似于函数指针
… {
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 >
一般.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 >
下面为了回传数据仅仅是数据而不是连同整个页面一起发送过来。
在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();
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = “text/xml”;
Response.write(“bye”); }
你在本函数结束处设一个断点,是否nodes就已经被赋值了呢?然后继续执行你的页面就会跳出一个bye的提示框。这就是Ajax异步传输。