我想做个最简单的例子,实现以下功能。
在一个画面上画一个TextBox和一个Button,当点Button时,通过Javascript来调用Button的ButtonClick事件,在这个事件中将TextBox中的值设置为1。
整个过程不刷新。请问怎么实现?
希望给出简单代码,推荐一些简单的文章!谢谢

解决方案 »

  1.   

    希望你使用M$的 Icallbackeventhandle接口,这个比较好简单的很容易实现,MSDN里有
      

  2.   

    楼主:ajax技术从你发贴我才去查了,不过这种技术看来会被看好的。
    支持一下你的贴子
      

  3.   

    顶,本人在web方面也是入门难,一直没入门,既然都说是容易的, 很容易的, 不难的,
    那就请大侠们赏个小例子吧,说查msdn的,谁都知道的啦,找到了就不用来问了.
      

  4.   

    首先给BUTTON添加一个客户端事件
    TextBox有一个ClientID属性,就是客户端生成的ID,可以用JS控制他的VALUE值,
      

  5.   

    首先给BUTTON添加一个客户端事件
    TextBox有一个ClientID属性,就是客户端生成的ID,可以用JS控制他的VALUE值,
    -------------------------------
    下面是我写的代码,但这样是刷新的, 怎么做到无刷新的呢?<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <script language ="c#" runat ="server" >
        void button1_Click(object sender, EventArgs e)
        {
            this.label1.Text = "这样写是刷新的";
            
        }</script>
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <asp:Button ID ="button1"   Text ="请点我测试是不是刷新的" OnClick ="button1_Click" runat ="server" />
        <asp:Label ID = "label1" runat ="server" ></asp:Label>
        </div>
        </form>
    </body>
    </html>
    --------------------
      

  6.   

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <script type="text/jscript">
        function  aj()
        {
         pay=document.getElementById("te").value;
         var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//创建XMLHTTPRequest对象,需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]
         xmlhttp.open("GET","Default12.aspx",false,"","");   //使用HTTP GET初始化HTTP请求 
         xmlhttp.send();                   //发送HTTP请求并获取HTTP响应 
         if(xmlhttp.responseText=='1')    //获取返回结果字符串 
         {
              alert("插入数据成功!");
         }
        else
        { 
        alert("插入数据没有成功!");
        }
        }
        
        
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <input type="text" id="te" />
        <input type="button" onclick="aj()" />
        </div>
        </form>
    </body>
    </html>public partial class Default12 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write( "1");
        }
    }
      

  7.   

    同意楼上,这个不需要ajax技术
      

  8.   

    <asp:Button   Text ="请点我测试是不是刷新的" OnClick ="button1_Click" runat ="server" />
     既没有ClientId这个属性 也没有value这个属性,
      

  9.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
        <script type="text/javascript">
        function PagePostBack(){
        var arg="";
        var content=document.getElementById("tb");
        //注册回调脚本
        <%=ClientScript.GetCallbackEventReference(this,"arg","ShowClientContext","content")%>
        }function ShowClientContext(result,context){
    context.value=result;
    }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <input type="text" id="tb" />
        <input type="button" onclick="PagePostBack()" value="postback" />
        </div>
        </form>
    </body>
    </html>
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;//实现ICallbackEventHandler接口
    public partial class Default3 : System.Web.UI.Page, ICallbackEventHandler 
    {
        public string _Result;    protected void Page_Load(object sender, EventArgs e)
        {    }
        //ICallbackEventHandler接口要求必须提供以下两种方法
        public  void RaiseCallbackEvent(string argu)
        {
            _Result = "1";
        }
        public  string GetCallbackResult()
        {
            return _Result;
        }}
      

  10.   

    我不是想需不需要AJAX,就是想要一个满足我帖子的Sample应该怎么实现,注意一定是不刷新的。
      

  11.   

    hegang888888888(我是农民) ( 谢谢你的代码, 不过奇怪的是,总是返回"alert("插入数据没有成功!");  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//创建XMLHTTPRequest对象,需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]
    怎么知道自己的环境支持不支持这个呢?要是没有, 怎么加入引用?
      

  12.   

    blackant2(乔峰) ( ) 信誉:100    Blog 
    的例子我也做了一遍,恩,可以用,我看到效果了
      

  13.   

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default12.aspx.cs" Inherits="Default12" %>
    Default12.aspx只留这,另外的可能与浏览器有关,网上看看
      

  14.   

    2在atlas解决方案中也可以使用page method来实现<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageMethod.aspx.cs" Inherits="PageMethod" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
        <atlas:ScriptManager ID="ScriptManager1" runat="server">
        </atlas:ScriptManager>
        <script type="text/javascript">
        function RequestWebMethod(){
            PageMethods.Greeting(onCallback);
        }
        function onCallback(result){
            //document.getElementById("divResult").innerText=result;
            document.getElementById("<%=TextBox1.ClientID%>").value=result;
        }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            Hello:<asp:TextBox ID="TextBox1" runat="server" Text="World"></asp:TextBox>
            <input id="Button1" type="button" value="button" onclick="RequestWebMethod();" />
            <div  id="divResult">
            </div>
         </div>
        </form>
    </body>
    </html>
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class PageMethod : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
             
        }
        [System.Web.Services.WebMethod]
        public string Greeting() {
            return "1";
        }
    }
      

  15.   

    3.在atlas 方案中也可以使用web service来解决
    HelloWorld.asmx:
    ================using System;
    using System.Web;
    using System.Collections;
    using System.Web.Services;
    using System.Web.Services.Protocols;
    using System.Configuration;
    using System.Data;
    using System.Data.SqlClient;
    /// <summary>
    /// Summary description for HelloWorld
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class HelloWorld : System.Web.Services.WebService {    private static string[] autoCompleteWordList = null;
        public HelloWorld () {        //Uncomment the following line if using designed components 
            //InitializeComponent(); 
        }    [WebMethod]
        public string Greeting(string username) {
            return "Hello "+username;
        }
    }
    ========aspx
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Hello.aspx.cs" Inherits="Hello" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Hello world</title>
        <script type="text/javascript">
            function NavigateWebService(){
                var username=document.getElementById("tb_UserName").value;
                HelloWorld.Greeting(username,OnRequestComplete);
            }
            function OnRequestComplete(result){
                document.getElementById("Div_Result").innerText=result;
            }
        </script>
        <!--首先这儿要放置一个脚本管理器,并引用webservice-->
        <atlas:ScriptManager runat="Server" id="ScriptManager">
        <Services>
            <atlas:ServiceReference Path="HelloWorld.asmx" />
        </Services>
        <ErrorTemplate>
        </ErrorTemplate>
        <Scripts>
        </Scripts>
        </atlas:ScriptManager> 
    </head>
    <body>
     
        <form id="form1" runat="server">
            hello <input type="text" id="tb_UserName" value="world" />
            <input type="button"  value="访问Web服务" onclick="NavigateWebService();"/><br />
            这儿是从服务端返回的结果:<div id="Div_Result">
            </div>
                </form>
        
    </body>
    </html>
      

  16.   

    to hegang888888888(我是农民) ( ):
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default12.aspx.cs" Inherits="Default12" %>
    ----------------我用的是Default.aspx.cs
      xmlhttp.open("GET","Default12.aspx",false,"","");   //使用HTTP GET初始化HTTP请求 
    这里也做了相应的修改, 还是没有成功,另外
    public partial class Default12 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write( "1");
        }
    }
    你在Page_Load里写1,结果页面一出来就出来一个1了,而且点按钮时还是插入数据不成功,是你程序问题还是我环境问题,要不你将程序发给我?
      

  17.   

    hao1gerem.gbaopan.com
    里面有我的一个例子,可以去看看
      

  18.   

    c_delight (向前冲)  开的这个帖很有意思,我在此是沾光了,在此谢谢!
      

  19.   

    hegang888888888(我是农民) ( ) 信誉:100    Blog 
    他的例子也基本可用
    只是有两个地方要改一下
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
        <script type="text/jscript">
        function  aj()
        {
         pay=document.getElementById("te").value;
    //这个对象并不一定总能创建成功
    //因为在firefox/netscape中是使用
    //var xmlhttp=new XMLHttpRequest来创建xmlhttprequest对象的
         var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//创建XMLHTTPRequest对象,
    需MSXML4.0支持 ["MSXML2.XMLHTTP.4.0","MSXML2.DOMDocument.4.0"]     xmlhttp.open("GET","Default12.aspx",false,"","");   //使用HTTP GET初始化HTTP请求 
         xmlhttp.send();                   //发送HTTP请求并获取HTTP响应 
    //send后不能马上判断responseText
    //因为有网络延时,应该使用回叫,或者等xmlhttprequest对象的状态变更
    //在回叫中判断xmlhttp.readyState==READY_STATE_COMPLETE 再来alert
         if(xmlhttp.responseText=='1')    //获取返回结果字符串 
         {
              alert("插入数据成功!");
         }
        else
        { 
        alert("插入数据没有成功!");
        }
        }
        
        
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <input type="text" id="te" />
        <input type="button" onclick="aj()" />
        </div>
        </form>
    </body>
    </html>
      

  20.   

    许多所谓Ajax例子看上去很不错,但是细细看你会发现web编程仅仅回到了5年前的水平(如果你知道5年前有多么原始)。举个例子,如果你在页面上拖入一个控件,然后在程序动态运行时改变它的属性和界面表现,那么不论你怎么操作,它都不会丢失状态。此时,你需要编写代码的方便性就决定了你将来的前途。你所学的那个东西不能用三言两语就实际达到这种“管理状态”的方便效果,那么任何对Ajax原理的解释对你来说都是离得很远的。我们来用3年前的java热作个比喻,当.net开始热起来的时候,有了对比才会发现决大部分学java的人其实永远都只能站在java的门外望职业程序员兴叹。现在的Ajax热会让很多人更惨。如果你不从一开始就选择工程性的Ajax框架去学习,那么你实际上用2年时间学习之后也做不出什么像样的应用。
      

  21.   

    那么不论你怎么操作,它都不会丢失状态  -->  那么不论你怎么操作,它都照理说不会丢失状态实际上很少有Ajax实例是基于成功的框架之上再给你示例,更多的是给你一个从一个仅有低级雏形、尚在摸索的应用中拿出一点代码来作为例子赚取稿费。