jQuery AJAX调用ASP.NET页面方法。如何将值返回给jQuery?

jQuery AJAX调用ASP.NET页面方法。如何将值返回给jQuery?,asp.net,jquery,Asp.net,Jquery,如果我使用jQuery AJAX调用特定的ASP.NET页面方法,如何让该方法将值返回给调用它的AJAX方法 更新 我的情况是,我有一个现有的web应用程序,其中包含许多现有的方法。我希望能够使用jQuery执行其中一些方法,然后用结果更新UI。我的任务是远离ASP.NETAjax,坚持使用jQuery。管理层关心的是Microsoft对ASP.NET AJAX的持续开发和支持。我同意他们的看法。有两种方法可以剥这只猫的皮(我很熟悉) .Net方式,它涉及一个Web方法和一个脚本管理器(请参见此

如果我使用jQuery AJAX调用特定的ASP.NET页面方法,如何让该方法将值返回给调用它的AJAX方法

更新


我的情况是,我有一个现有的web应用程序,其中包含许多现有的方法。我希望能够使用jQuery执行其中一些方法,然后用结果更新UI。我的任务是远离ASP.NETAjax,坚持使用jQuery。管理层关心的是Microsoft对ASP.NET AJAX的持续开发和支持。我同意他们的看法。

有两种方法可以剥这只猫的皮(我很熟悉)

  • .Net方式,它涉及一个Web方法和一个脚本管理器(请参见此处:)

  • “旧的Skool方法”包括通过确定所称内容来简单地写出响应。通常,您会使用类似MVC的框架,以便可以映射回Object.Method(id)


  • 没有MVC这样的框架也可以做到这一点,但这会让事情变得更加困难,如果你这样做的话,你真的应该使用ASP.Net处理程序而不是实际的页面(因为你不需要Aspx开销)。这是一个Ashx文件。

    您可以通过以下方式将JQuery与页面方法结合使用:

    成功回调包含一个带有返回数据的参数

    HTH.

    对于纯ASP.NET(这里不说WCF),我会使用一个处理程序(ASHX)文件,并使用JSON作为交换格式。我不会深入讨论JSON的细节(这是一个不错的开始),但其思想是在服务器上使用一个轻量级处理程序,生成JSON文本并将其返回给客户机,然后客户机可以在javascript中轻松使用该结构

    这显然是一个简化的示例,但要点是JSON可以从服务器驱动数据,并且很容易被客户端上的javascript使用

    服务器:

    <%@ WebHandler Language="C#" Class="Handler" %>
    
    using System;
    using System.Web;
    
    public class Handler : IHttpHandler {
    
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/json";
            context.Response.WriteFile("~/myData.json");
        }
    
        public bool IsReusable {
            get {
                return false;
            }
        }
    }
    

    我不熟悉“Handler”类型。AJAX方法难道不能执行标准的web方法并从中获得结果吗?ASP.Net处理程序与ASPX页面类似,只是它的开销要低得多,并且是为类似的事情而设计的(也可以考虑RSS提要)。您可以使用jQuery执行WebMethod(上面的建议之一)。mjmarsh的方法重量轻得多,速度也应该快一点,因为它不仅比处理ASPX文件,而且比处理.Net事件结构的开销要少。@Kris:这是不对的。当您请求在ASPX页面中定义的“页面方法”时,您根本不涉及任何传统的WebForms页面生命周期。事实上,它们甚至必须是
    静态的
    方法,因为它们是在没有创建页面实例的情况下执行的。这是一种特例速记,用于在ASPX页面内联声明ASMX“ScriptService”方法。您的自定义处理程序可能没有实施任何安全措施来防止某些已知的黑客攻击。使用Web服务。@Dave,嗯,我从来没有说过你会触动任何页面生命周期。在这样的技术上使用web方法确实会有更多的开销。探索发送和接收的数据,以便自己验证。
    myData = 
          (function () 
           {
              var json = null;
              $.ajax({
                  'async': false,
                  'global': false,
                  'url': "handler.ashx",
                  'dataType': "json",
                  'success': function (data) {    
                      // this code is called when the 
                      // data is returned from the server              
                      json = data;
                  }
              });
              return json;    
          }
              )(); 
    
    alert(myData.MyArray[0].MyProperty);