ajaxpro实现前台后台传数据
关键词: ajaxpro 传递参数1,建立.net2005的网站test。
2,在bin文件夹下引用ajaxpro.dll(网站下载),或者直接把bin目录放到test网站之下。
3,在webconfig中增加如下代码
<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
4,在后台cs中写代码:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}
[AjaxPro.AjaxMethod]
public string senddata(string rq)
{
rq = "2006";
string str;
str="sdfsdfsdfsdfsfdsffdfs"+rq;
return str;
}
}
5,在前台写代码:
<script>
function diaoyong()
{
var c;
c=hello._Default.senddata("2006",handle);
//注意:传递参数,senddata后面的“2006”作为前台的数据传递给后台。后面的handle函数
//是处理的函数,默认为这个,其实最好不用这么写,不过不这么写调试打印出来的有问题,
// 疑惑ing。
}
function handle(res)
{
alert(res.value);
}
</script>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="search" onclick="diaoyong();" />
<input id="Text1" type="text" /></div>
</form>
</body>
//疑惑2:如果在.cs中写上了命名空间:[AjaxPro.AjaxNamespace("hello")]
//则在js中调用时候写上:hello._default.senddata()时候会出现问题,说是为空或者不是对象
采用AjaxPro.dll,
如果是.NET 2.0,请采用AjaxPor.2.dll
注意事项
1.引用using AjaxPro;
2.在Web.Config文件中 </system.web> 的前面加上
<httpHandlers>
<add verb= "POST,GET " path= "ajaxpro/*.ashx "
type= "AjaxPro.AjaxHandlerFactory, AjaxPro "/>
</httpHandlers>
3.前台的form必须是runat=server,否则报错 ***********重要************
4. *.aspx.cs文件
在命名空间下一行,类定义的上一行加上
[[AjaxPro.AjaxNamespace( "当前类名 ")]
注:此适应版本 6.10.6.1 ,不同版本有些不同
在定义的方法的上一行加上[AjaxPro.AjaxMethod] 表示该方法是Ajax方法
在Page_Load ( )方法内加上注册该类:
AjaxPro.Utility.RegisterTypeForAjax(typeof(定义Ajax方法所在的类名));
5: 在javascript中使用Ajax方法:
Ajax类.Ajax方法(参数, 回调函数名称)
相关示例:
前台----javascript -----
function DelRec(){
var n=1;
if (n <1) return;
var ssid=document.getElementById( 'dgrid ').rows[n].cells[0].innerHTML;
if(confirm( "Are You Sure Delete Current Select Record, ID= " + ssid)==false) return;
var XmlStr= " <?xml version= '1.0 ' encoding= 'UTF-8 '?> <REC> <SID> " + ssid + " </SID> </REC> ";
WebAjaxAct.DelRec(XmlStr,DelTableRow);
}
function DelTableRow(result){
var xmlDoc=new ActiveXObject( "Microsoft.XMLDOM ");
//alert( "返回值: " + result.value);
xmlDoc.loadXML(result.value);
var n=xmlDoc.documentElement.childNodes[0].childNodes[0].nodeValue;
//删除表格一行
}
***.aspx.cs文件 (请注意*********地方的代码,并对照上面的描述)
-------- C# ------
using AjaxPro;
namespace WTest{
[AjaxPro.AjaxNamespace( "WebAjaxAct ")] **************
public class WebAjaxAct : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e) {
AjaxPro.Utility.RegisterTypeForAjax(typeof(WebAjaxAct)); ***********
}
[AjaxPro.AjaxMethod] ************
public string UpdateRec(string szXML){
其它处理
string XmlStr= " ";
//给XmlStr赋值
return XmlStr;
}
}
}
AjaxPor + XML 轻松实现无刷新分页
原理,利用AjaxPro的后台方法返回分页的XML,再利用XML2Table实现前台显示
<INPUT onclick= "ShowPage( '1 ') " type= "button " value= "First ">
<INPUT onclick= "ShowPage( '2 ') " type= "button " value= "Prev ">
<INPUT onclick= "ShowPage( '3 ') " type= "button " value= "Next ">
<INPUT onclick= "ShowPage( '4 ') " type= "button " value= "Last ">
<asp:datagrid id= "dgrid " runat= "server " > </asp:datagrid >
function ShowPage(i)
{
if (i== "1 ") curpage=1;
if (i== "2 ") curpage--;
if (i== "3 ") curpage++;
if (i== "4 ") curpage=npage;
if(curpage <=1) curpage=1;
if(curpage> npage) curpage=npage;
AjaxPro类.返回当前分面的方法(curpage,ShowTable=function (result){
if (result.value!=null){XML2Table( 'dgrid ',result.value);
}
);
}
function XML2Table(tb,szxml){
if (szxml==null || szxml== " ") return;
var xmlDoc=new ActiveXObject( "Microsoft.XMLDOM ");
xmlDoc.async = false;
xmlDoc.loadXML(szxml);
if(xmlDoc.parseError.errorCode!=0){
// var txt= "Return Data Format Error:"r"n"r"n ";
// txt=txt+ "Error Code: " + xmlDoc.parseError.errorCode + ""n ";
// txt=txt+ "Error Reason: " + xmlDoc.parseError.reason;
// txt=txt+ "Error Line: " + xmlDoc.parseError.line;
// alert(txt);
return;
}
var x=xmlDoc.documentElement;
var m=x.childNodes.length;
if (m==0) return;
var n=x.childNodes[0].childNodes.length;
var t=document.getElementById(tb);
for(var i=t.rows.length-1;i> 0;i--)t.deleteRow(i);
var tr;
var td;
for (var j=0;j <m;j++){
tr=t.insertRow(-1);
//tr.height=16;
for (i=0;i <n;i++){
td=tr.insertCell(-1);
try{
td.innerHTML=x.childNodes[j].childNodes[i].childNodes[0].nodeValue;
}
catch(err){td.innerHTML= " ";}
}
}
}