2011-01-31 101 views
5

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

更新

我的情况是我与许多现有的方法现有的Web应用程序。我希望能够使用jQuery来执行其中的一些方法,然后用结果更新UI。我的任务是远离ASP.NET AJAX并坚持使用jQuery。管理层担心微软继续使用ASP.NET AJAX进行开发和支持。我同意他们。

回答

1

有两种方法来为这只猫(我熟悉的)皮肤。

  1. 的“净路”,这涉及到一个Web方法和脚本管理器(在这里看到:http://geekswithblogs.net/frankw/archive/2008/03/13/asp.net-ajax-callbacks-to-web-methods-in-aspx-pages.aspx)。

  2. “古老的Skool方式”,其中涉及通过确定所谓的所谓简单地写出答复。通常你会使用像MVC这样的框架,所以去http://www.MyWebsite.com/Object/Method/Id可以映射回Object.Method(id)。

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

1

使用纯ASP.NET(不是在这里说WCF),我会使用处理程序(ASHX)文件,并使用JSON作为交换格式。我不会深入JSON的细节(here是一个体面的开始),但这个想法是在服务器上生成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; 
     } 
    } 
} 

客户端:

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); 
+0

我不熟悉“Handler”类型。 AJAX方法不能执行标准的Web方法并从中获取结果吗? – webworm 2011-01-31 19:22:10

相关问题