天天看点

js前台调用后台方法

一、首先是没有参数的后台方法(该方法是加载客户端下来菜单控件):

public string GetRole() 
   { 
       string result =""; 
       DataSet ds =a.SelectRole(""); 
       for (int i = 0; i <ds.Tables[0].Rows.Count; i++) 
       { 
           result +=ds.Tables[0].Rows[i]["ID"].ToString() + "," +ds.Tables[0].Rows[i]["RoleName"].ToString() + "|"; 
       } 
       returnresult.TrimEnd('|'); 
   } 
           

这是前台调用(红色部分就是关键点):

function testRole() { 
 
           var strdsa='<%=getRole() %>'           
           alert(strdsa); 
           var selerole =document.getElementById("selRole"); 
            
           if(selerole.options.length) { 
               delesele(); 
           } 
           //以|分解 
           var strRole = strdsa.toString().split("|"); 
            
           for (var i = 0; i <strRole.length; i++) { 
 
               var tempitem = strRole[i]; 
               var tempitems = tempitem.split(","); 
           
              selerole.options.add(new Option(tempitems[1], tempitems[0])); 
           } 
       } 
 
           

二、这是一个带参数的方法(后台方法):

protected string CsharpVoid(string strCC) 
{ 
   strCC = "你好!" +strCC; 
   return strCC; 
}
           

前台JS    

function Init()
{ 
   var v = "中国"; 
   var s ='<%=CsharpVoid("'+v+'") %>'; 
   alert(s); 
}
           

三、触发button_click

1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;

2、在前台写一个js函数,内容为document.getElementById("btn1").click();

3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

总结:个人认为,使用js调用后台方法时,会出现以下问题:

1、  在页面载入的时候,页面就已经对后台方法进行解析,前台js无法动态向后台方法传递不同的参数。

2、  后台方法执行后,如果有返回值,无法给前台返回执行结果,或者无法给前台页面赋值。

Ps:想要实现前后台数据实时交互,可用方法AjaxPro2或者是JQuery的getJson方法