test.aspx页面,在其cs文件里有一个方法如:
protected void dothat()
{
   Response.Write("<script>alert('dothat()')</script>");
}html代码区域有一个方法如:
<script>
function do()
{
   alert("do()");
}
</script>
现在我想在html里的do方法里调用cs里面的dothat方法,该怎么写?
<script>
function do()
{
   alert("do()");
   //do();    ???<-----到底怎么写呢?
}
</script>

解决方案 »

  1.   

    AJAX ATLAS使用WebServices调,可以看看这个
      

  2.   

    客户端代码与服务器端代码交互的方法是改变隐藏域的值然后提交
    服务器端Request这个值
      

  3.   

    Test.aspx.cs
    protected void Page_Load(object sender, EventArgs e){
       AjaxPro.Utility.RegisterTypeForAjax(typeof(Test),this);
    }
    [AjaxPro.AjaxMethod]
    protected void dothat(){
       Response.Write("<script>alert('dothat()')</script>");
    }
    Test.aspx
    <script>
    function do(){
        Test.dothat()
    }
    </script>
      

  4.   

    需要下载AjaxPro.NET类库
    http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AjaxProgoogle一下,很多的
      

  5.   

    谢谢,我下了,但是下的是最新版的6.9.20.1_DLL.zip,并且用的时候按你给的写法报错
    AjaxPro.Utility.RegisterTypeForAjax(typeof(WebForm2)); 这个方法它没有,它只有:AjaxPro.Utility.RegisterConverterForAjax(typeof(WebForm2));但是用这个方法,不知道到底RegisterConverterForAjax这个方法里面带的参数是什么。
    能不能再帮我解答一下?我的QQ:44340662 希望能在线帮忙指点一下
      

  6.   

    好的  
    呆会儿
    你在Web.Config里<system.web></system.web>节点中要加入:
    <httpHandlers>
    <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
    </httpHandlers>
      

  7.   

    我又从新下了一个,里面有那个方法,可是按照你说的都做了,我让一个按钮的onclick="dothis();"结果还是报错,说我"WebForm2未定义"
    程序如下:
    aspx里:
    <INPUT style="WIDTH: 96px; HEIGHT: 32px" onclick="dothis();" type="button" value="Button">
    <script language="javascript">
    function dothis()
    {
        WebForm2.dothat();
    }
    </script>cs文件里:namespace News
    {
       public class WebForm2 : System.Web.UI.Page   private void Page_Load(object sender, System.EventArgs e)
       {
           AjaxPro.Utility.RegisterTypeForAjax(typeof(WebForm2));
       }   [AjaxPro.AjaxMethod]
       protected void dothat()
       {
           Response.Write("<script>alert('dothat()')</script>");
       }
      
       .......
    }Web.config里面的那句我也写了.
    一运行就是老说我WebForm2未定义.
      

  8.   

    需要下载atlas安装文件 ,msdn上有,装一下就行了
      

  9.   

    web.config:
    <system.web>
       ....................
       ....................   <httpHandlers>
          <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
       </httpHandlers>
       ....................
       ....................
    </system.web>WebForm1.aspx:
    <head runat="server">
        <title></title>
        <script type="text/jscript">
        function GetServerTime(){
            var v = WebForm1.TestAjaxPro().value
            alert(v)
        }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
          <div>
            <input id="Button2" type="button" value="GetDateTime" 
               onclick="GetServerTime()" />
          </div>
        </form>
    </body>
    </html>WebForm1.aspx.cs:
    protected void Page_Load(object sender, EventArgs e){
         AjaxPro.Utility.RegisterTypeForAjax(typeof(WebForm1), this);
    }[AjaxPro.AjaxMethod]
    public string TestAjaxPro() {
       return DateTime.Now.ToString();
    }我试了好着的
      

  10.   

    把protected 改成public,就没有错误了但你用Response.Write("string");没有反应。
    本身你这种用法就多余,客户端要弹出窗口直接弹就可以了,为什么还要返回去?
    我之前用都是用来从服务器返回值或者别的
      

  11.   

    我都改成public了,但结果点击后还是说我webform2未定义
    是不是在function dothis()里面不能直接写WebForm2.dothat()???
      

  12.   

    根本没必要用那么麻烦的方法
    前台定义一个隐含的<input id="hid" type="hidden" value="0" runat="server">
    <script l...>
    document.getElementById('hid').value = "1"后台cs:private void btnSave_Click(object sender, System.EventArgs e)
    {
    if(hidCheckFlag.Value == "1")
    this.do();
    }
    不知道你们为什么用那么长的代码?
      

  13.   

    看不懂你写的。
    我现在要实现的功能是,aspx页面中有一个function dothis(),其cs页面中有一个void dothat(),我要在dothis里面调用dothat
      

  14.   

    c137004801211401(chaiwebcode) 的有道理
    你不妨换一种思路想想问题。用一个隐藏的服务器端控件作为媒介。
      

  15.   

    c137004801211401(chaiwebcode) 说的是cs调aspx里的内容,我现在要aspx来调cs里的内容