ajaxpro实现前台后台传数据

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>

//疑惑1:必须写handle函数,否则打印出来的是object object,不知为什么。
//疑惑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= " ";}
}
}
}

原文地址:https://www.cnblogs.com/winner/p/1326660.html