ajaxpro實現前臺後臺傳數據

實例OAY Report

 

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" οnclick="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   οnclick= "ShowPage( '1 ') "   type= "button "   value= "First ">
<INPUT   οnclick= "ShowPage( '2 ') "   type= "button "   value= "Prev ">  
<INPUT   οnclick= "ShowPage( '3 ') "   type= "button "   value= "Next ">
<INPUT   οnclick= "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= " ";}
}
}
}

 

發佈了51 篇原創文章 · 獲贊 6 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章