【问题标题】:Can you do ajax without using ASP.net ajax toolkit?不使用 ASP.net ajax 工具包可以做 ajax 吗?
【发布时间】:2008-10-24 20:22:04
【问题描述】:

您可以在不使用 ajax 工具包的情况下在 ASP.net webform 上执行 ajax 吗? (请发布示例链接)

【问题讨论】:

    标签: asp.net ajax asp.net-ajax


    【解决方案1】:

    是的...在这篇文章中查看我的示例

    AJAX - How to Pass value back to server

    这可以比 ASP.NET ajax 执行得更好,但编码时间更长。

    【讨论】:

    • 可能需要更长的时间才能开始,但一旦你为自己拥有了一个好的库就不会了。另外,当你控制图书馆时,你可以做的限制更少。
    【解决方案2】:

    当然。在 ajax 一词出现之前,人们已经使用 ajax 多年了。 Jquery 是一个流行的库,您可以使用它在不刷新页面的情况下调用回服务器。

    【讨论】:

      【解决方案3】:

      当然可以!我在 .NET 1.1 中(在 ASP.Net Ajax 发布之前)所做的是定义一个 HttpHandler 来监听对 ajax.aspx 的调用,运行适当的方法,然后返回结果。我使用 Prototype library 进行 Ajax 调用,但您可以使用任何其他方法,或者手动进行。

      我只是凭记忆,但这是我使用的代码(对于 .NET 2.0,但你明白了):

      // client-side js:
      var foo = new Ajax.Request('ajax.aspx',
      {
         method:'get',
         parameters: { method: 'GetFive' },
         onSuccess: function(transport){
           var response = transport.responseText || "no response text";
           alert("Success! \n\n" + response);
      },
      onFailure: function(){ alert('Something went wrong...') }
      });
      
      // web.config:
      <httpHandlers>
        <!-- pre existing handlers go here -->
        <add verb="GET" path="ajax.aspx" type="Fully.Qualified.Name.AjaxHandler, AssemblyName" validate="false" />
      </httpHandlers>
      
      // AjaxHandler.cs
      public class AjaxHandler : IHttpHandler {
        internal delegate object AjaxFunction();
      
        private Dictionary<string, AjaxFunction> functions;
      
        public bool IsReusable {
          get { return true; }
        }
      
        public void ProcessRequest(HttpContext context) {
          this.functions = new Dicionary<string, AjaxFunction>();
          this.functions.Add("GetFive", delegate() {
            return 5;
          });
      
          string functionName = context.Request["method"];
          AjaxFunction func = this.functions[functionName];
          if (func != null) {
            object val = func();
            context.Response.Write(val);
          }
        }
      }
      

      [大注意:以上内容未经测试,设计得并不好,甚至可能无法编译,但它应该给你正确的想法。]

      【讨论】:

        【解决方案4】:

        这是一个流行的工具:AjaxPro

        正如其他人所指出的,您可以使用 XmlHttpRequest 对象和 javascript 自己编写整个代码。但是,如果您的应用程序将使用非常复杂的技术,那么自己编写代码将变得非常乏味。这些工具变得更加强大和易于使用。

        顺便说一句,ASP.Net Ajax 有两个元素。一个是包含在 Visual Studio 2008 中的 Ajax 扩展,可以添加到 Visual Studio 2005。它可以用于比“工具包”更多的功能。诸如部分页面刷新和检索数据而不执行完整回发之类的事情。另一个是 Ajax Control Toolkit,需要单独下载。 “工具包”主要包括花哨的控件,尤其是具有 DHTML 效果(显示、隐藏、模拟动画)的控件。

        【讨论】:

          【解决方案5】:

          哦,绝对的。

          您可以在 ASP.NET 表单中使用诸如 jQuery 之类的库,而不是 UpdatePanel 和围绕它的所有用具。

          在我以前工作的地方,早在 AJAX 出现之前,我们就已经在使用它了。那是在我们的东西只在 IE 中工作的日子里:-)

          在使用 ASP.NET 服务器控件的 ASP.NET 表单中,您需要做的一件事是使用服务器在从 javascript 引用控件时为您的控件生成的正确客户端 ID。因此,如果您有一个 ID 为“telephoneNumber”的标签,则需要将其引用为 。例如

          $("#<%=telephoneNumber.ClientID %>").attr("disabled", "disabled");
          

          使用 jQuery 等库,您仍然可以调用您的 ASP.NET Web 服务,但您可能更适合研究 WCF 和 JSON 序列化。

          您不必丢弃 ASP.NET ajax 位中的所有内容,我仍然使用脚本服务调用 Web 服务。在我可以用 JSON 替换之前,这是一个半路:

          http://msdn.microsoft.com/en-us/magazine/cc163499.aspx

          【讨论】:

            【解决方案6】:

            Ajax 只是意味着当用户正在查看您的网页时,使用 javascript 返回服务器并获取其他内容。然后使用 javascript、DOM 使用您获取的内容更新页面。

            XMLHttpRequest 对象很好,但即使在它之前,您也可以使用隐藏的 IFRAME 来做同样的事情......

            这是您开始使用所需的所有 javascript 代码:

            function GetXmlHttpObject()
            {
                var objXMLHttp=null
                if (window.XMLHttpRequest)
                {
                    objXMLHttp=new XMLHttpRequest()
                }
                else if (window.ActiveXObject)
                {
                    objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
                }
                return objXMLHttp
            }
            
            
            function stateChanged()
            {
                if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
                {
                    // do something with xmlHttp.responseText
                }
            }
            
            
            function SendAsyncHttpRequest()
            {
                xmlHttp=GetXmlHttpObject()
            
                if (xmlHttp==null)
                {
                    return
                }
            
                var url = "http://YOUR_URL"
                xmlHttp.onreadystatechange=stateChanged
                xmlHttp.open("GET",url,true)
                xmlHttp.send(null)
            }   
            

            【讨论】:

              【解决方案7】:

              是的!

              那里有很多 ASP.NET AJAX 的替代品。 大多数实际上也更好。你可能想看看我的项目; Ra-Ajax 满足您的需求:)

              【讨论】:

                猜你喜欢
                • 2012-07-04
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-06-19
                • 2011-02-12
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多