我现在是在JS函数中这样function  To(s)
{
var a="1";
 var a1="<%=Open("+a+") %>";
}
CS中: public string Open(string a)
    {
        if (a.Equals("1"))
        {
            openwin();
            return a;
        }
        else
        {
            return null;
        }
 
    }现在是好像不起作用?这个值没传进去啊

解决方案 »

  1.   

    我主要的目地就是执行openwin();
      

  2.   

        var a="1";
        var a1='<%=Open("'+a+'") %>';
      

  3.   

    // 需要标识为WebMethod 
    [System.Web.Services.WebMethod]
    // 注意,要让前台调用的方法,一定要是public和static的 
    public static string aaa(string name)
    {
        string result = "Hello:" + name;
        return result;

     <script type="text/javascript">
            function btnClick(){
                // 调用页面后台方法,前面跟方法所需的参数,接着是方法回调成功时要执行的js函数,最后一个是方法回调失败时要执行的js函数
                PageMethods.aaa("you",funReady,funError);
            }        
            // result 就是后台方法返回的数据
            function funReady(result){
                alert(result);
            }
            // err 就是后台方法返回的错误信息
            function funError(err){
                alert("Error:" + err._message );
            }
         </script> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
            <input type="button" onclick="btnClick()" value="test" />  方法2:
       
        function Show()
        {
          var v = "中国";
          var s = '<%=CsharpVoid("'+v+'") %>';  // 你好!“+V+”
          alert(s);
        } 
        protected string CsharpVoid(string strCC)
        {
           strCC = "你好!" + strCC;
           return strCC;
        } 
    <input type="button" onclick="Show()" value="hhhh" />
      

  4.   

    http://www.cnblogs.com/yvesliao/articles/1334838.html
      

  5.   

    var a1="<%=Open(""+a+"") %>";不是应该这样么?
      

  6.   

    我其实,就是想在JS中来执行CS里的一个方法
      

  7.   

    <%= MethodName %>这种不叫执行 .cs 方法, 而是输出 .cs 中 方法的返回值
      

  8.   

    如果你仅仅是 希望在 js 中 获取 .cs 文件里 方法动态的返回值的话可以使用 <%= MethodName %>否则 都属于 ajax 范畴
      

  9.   


    //接受并处理服务器方法执行返回的结果
    function  To(s)
    {
        var a="1";
        CallServerMethod(a,null);
    }
           //接受并处理服务器方法执行返回的结果
            function Success(args, context) {
                //通过args可以拿到服务器的返回值
                //message.innerHTML = args;
            }
            //当接收服务器返回的结果发生了异常时调用的方法
            function Error(args, context) {
                //message.innerHTML = "发生了异常";
            }//实现ICallbackEventHandler接口
    public partial class CallBack_Pro_Callback : System.Web.UI.Page,ICallbackEventHandler
    {
        string result = string.Empty;
        //服务器执行的方法
        protected void Page_Load(object sender, EventArgs e)
        {
            ClientScriptManager csm = Page.ClientScript;
            //获取回调引用,会在客户端生成WebForm_DoCallback方法
            //最后一个参数:TRUE表示执行异步回调,FALSE表示执行同步回调
            String reference = csm.GetCallbackEventReference(this, "args", "Success", "", "Error", false);
            String callbackScript = "function CallServerMethod(args,context) {\n" +
                reference + ";\n}";
            //注册js脚本代码
            csm.RegisterClientScriptBlock(this.GetType(), "CallServerMethod", callbackScript, true);
        }    #region ICallbackEventHandler 成员
        
        //定义返回回调方法执行结果的方法
        public string GetCallbackResult()
        {
            return result;
            //throw new NotImplementedException();
        }
        //在服务器端执行的页面回调方法
        public void RaiseCallbackEvent(string eventArgument)
        {
            if (eventArgument.Equals("1"))
            {
                openwin();
                return eventArgument;
            }
            else
            {
                return null;
            }
            //throw new Exception();  //发生异常时,调用客户端的Error()方法
        }    #endregion
    }
      

  10.   

    我现在是用的这种方法1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
            2、在前台写一个js函数,内容为document.getElementById("btn1").click();
            3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
    但是这个方法有一个不足,就是把当前页给刷新了!
      

  11.   

    你可以使用 ICallbackEventHandler 接口实现 此功能。csdn 搜索功能不好用, 我写的例子找不到了, 你可以参看 #14
    除了 ICallbackEventHandler  接口, 你可以使用 xhr 对象也可以使用 js 框架 eg: jQ ,prototype
      

  12.   

    var a1="<%=Open(""+a+"") %>"; 会直接计算得到这个方法的值的
      

  13.   


    你这个报错啊
     //在服务器端执行的页面回调方法
        public void RaiseCallbackEvent(string eventArgument)
        {
            if (eventArgument.Equals("1"))
            {
                openwin();
                return eventArgument;
            }
            else
            {
                return null;
            }错误 88 由于“top.RaiseCallbackEvent(string)”返回 void,返回关键字后面不得有对象表达式    
      

  14.   

    错误 88 “top”不会实现接口成员“System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(string)”。“top.RaiseCallbackEvent(string)”或者是静态、非公共的,或者有错误的返回类型。  
      

  15.   

    sorry,直接复制你的没注意到,这里不用return直接复制给result就可以了
        #region ICallbackEventHandler 成员
        
        //定义返回回调方法执行结果的方法
        public string GetCallbackResult()
        {
            return result;
            //throw new NotImplementedException();
        }
        //在服务器端执行的页面回调方法
        public void RaiseCallbackEvent(string eventArgument)
        {
            if (eventArgument.Equals("1"))
            {
                openwin();
                result = eventArgument;
            }
            else
            {
                result = "";
            }
            //throw new Exception();  //发生异常时,调用客户端的Error()方法
        }    #endregion
      

  16.   


    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script>
            function ajaxPost() {
                var value = document.getElementById('<%=txt.ClientID%>').value;
                CallServerMethod(value, null);
            }        function Success(args, context) {
                if (args != 'error') {
                    alert(args);
                }
            }        
            function Error(args, context) {
                alert('error');
            }    </script>
    </head>
    <body>
        <form id="form1" runat="server">
        please enter 1
        <asp:TextBox ID="txt" runat=server></asp:TextBox>
        <asp:Button ID="btn" runat="server" OnClientClick="ajaxPost();return false;" Text="Click Me" />
        </form>
    </body>
    </html>
    private string result = "error";    protected void Page_Load(object sender, EventArgs e)
        {
            string reference = ClientScript.GetCallbackEventReference(this, "args", "Success", "", "Error", false);
            string callbackScript = "function CallServerMethod(args,context) {\n" +
                reference + ";\n}";
            //注册js脚本代码
            ClientScript.RegisterClientScriptBlock(this.GetType(), "CallServerMethod", callbackScript, true);    }    #region ICallbackEventHandler Members    public string GetCallbackResult()
        {        return result;
            //throw new NotImplementedException();
        }    public void RaiseCallbackEvent(string eventArgument)
        {
            Open(eventArgument);        //throw new NotImplementedException();
        }    #endregion    private void Open(string value)
        {
            if (value.Equals("1"))
            {
                openwin();
                result = DateTime.Now.ToString("yyyyMMdd HH:mm:ss");
            }        
        }    private void openwin()
        { 
            // to do sth;
        }page 实现 ICallbackEventHandler 接口
      

  17.   

    倒,俺猜不出来,俺在测yingyuebingya
     的方法,一会测你的,哈
      

  18.   

    javascript异步调用
    实现ASP。NETAJAX的接口
    混写代码可以的,是楼主没搞好。
    剩下不知道了。
      

  19.   

    报错:在下面这个位置
     void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
        {
            throw new Exception("The method or operation is not implemented.");
        }
      

  20.   


    //在服务器端执行的页面回调方法
        public void RaiseCallbackEvent(string eventArgument)
        {
            if (eventArgument.Equals("1"))
            {
                openwin();
                result = eventArgument;
            }
            else
            {
                result = "";
            }
            //throw new Exception();  //发生异常时,调用客户端的Error()方法
        }
    //改成这样还是报错吗?错误信息是什么?
      

  21.   


    是的,走到这里出现异常:
    void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
      {
      throw new Exception("The method or operation is not implemented.");
      }
    我记得你有这行来?
      

  22.   


    public void RaiseCallbackEvent(string eventArgument)
        {
            if (eventArgument.Equals("1"))
            {
                openwin();
                result = eventArgument;
            }
            else
            {
                result = "";
            }
            //throw new Exception();  //发生异常时,调用客户端的Error()方法
        }
    //就是这个方法啊,两个方法都是一样的,你仔细看下方法名
    //注释掉throw new Exception("The method or operation is not implemented.");
    //写上你想要在在服务器端执行的页面回调方法,像上面我写的这种
      

  23.   


    这样啊,具体需求是什么?
    function To(s) 

        var a="1";
        var a1="<%=Open("+a+") %>";
    }
    什么情况下需要调用?
      

  24.   

    那个我放弃不用了,我用层实现,现在用层的话,出现了一个问题,老大们帮忙看看吧:
    http://topic.csdn.net/u/20100423/15/9288fe02-49f1-4965-b680-6e2e94fb2532.html
      

  25.   

    你可以做一个隐藏按钮 ,隐藏按钮调用没返回值的方法
    js调用按钮的点击方法即可
    document.getElementById("按钮ID").click;
      

  26.   

     方法2:
        
      function Show()
      {
      var v = "中国";
      var s = '<%=CsharpVoid("'+v+'") %>'; // 你好!“+V+”
      alert(s);
      } 
      protected string CsharpVoid(string strCC)
      {
      strCC = "你好!" + strCC;
      return strCC;
      }这种方法可以用啊! 我刚才试过了.谢谢了!
      

  27.   

    #42
    如果返回值不是string是void该怎么做
    protected void CsharpVoid(string strCC)
      {
      strCC = "你好!" + strCC;
      return strCC;
      }
      

  28.   

    function Show()
      {
      var v = "中国";
      var s = '<%=CsharpVoid("'+v+'") %>'; // 你好!“+V+”
      alert(s);
      } 
    ///如果返回值是void该怎么做  protected void CsharpVoid(string strCC)
      {
      strCC = "你好!" + strCC;
      return strCC;
      }