zoukankan      html  css  js  c++  java
  • 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= " ";}
    }
    }
    }

  • 相关阅读:
    [Usaco2013 DEC] Vacation Planning
    [Usaco2015 DEC] Counting Haybales
    [ZJOI 2008] 泡泡堂BNB
    [USACO17FEB]Why Did the Cow Cross the Road II
    [Usaco2018 Feb] New Barns
    [HNOI 2006] 鬼谷子的钱袋
    [Usaco2017 Feb]Why Did the Cow Cross the RoadII
    初涉数论分块
    「在更」初涉历史最值线段树
    初涉DSU on tree
  • 原文地址:https://www.cnblogs.com/winner/p/1326660.html
Copyright © 2011-2022 走看看