2009-07-24 25 views
10

Làm thế nào để tôi gọi một phương thức trên trang ASP.NET Web Form bằng cách sử dụng phương thức getJSON trên jQuery?Sử dụng phương thức getJSON của jQuery với một mẫu Web ASP.NET

Mục tiêu là thế này:

  1. Người dùng nhấp vào một mục danh sách
  2. Giá trị được gửi đến máy chủ
  3. Server đáp ứng với danh sách có liên quan của công cụ, định dạng sử dụng JSON
  4. dụng nhất thứ hộp

Tôi không muốn sử dụng UpdatePanel, tôi đã thực hiện hàng trăm lần này bằng cách sử dụng khung ASP.NET MVC, nhưng không thể tìm ra bằng cách sử dụng Biểu mẫu web!

Cho đến nay, tôi có thể thực hiện mọi thứ, kể cả gọi máy chủ, nó không gọi đúng phương pháp.

Cảm ơn,
Kieron

Một số mã:

jQuery(document).ready(function() { 
    jQuery("#<%= AreaListBox.ClientID %>").click(function() { 
     updateRegions(jQuery(this).val()); 
    }); 
}); 

function updateRegions(areaId) { 
    jQuery.getJSON('/Locations.aspx/GetRegions', 
     { areaId: areaId }, 
     function (data, textStatus) { 
      debugger; 
     }); 
} 

Trả lời

24

Dưới đây là một ví dụ giản mà hy vọng sẽ giúp bạn bắt đầu:

<%@ Page Language="C#" %> 
<%@ Import Namespace="System.Web.Services" %> 

<script runat="server"> 
    [WebMethod] 
    public static string GetRegions(int areaId) 
    { 
     return "Foo " + areaId; 
    } 
</script> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>jQuery and page methods</title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 
</head> 
<body> 
    <script type="text/javascript"> 
    $(function() { 
     var areaId = 42; 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/GetRegions", 
      data: "{areaId:" + areaId + "}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(data) { 
       alert(data.d); 
      } 
     }); 
    }); 
    </script> 
</body> 
</html> 
0

tôi tinh chỉnh mã của bạn một chút. Tôi đã thêm đầu ra phía máy chủ của ClientID vào phương thức updateRegions để truyền nó vào. Và tôi đã thay đổi phương thức getJSON của bạn để chuyển vào url với tham số chuỗi truy vấn (thay vì dữ liệu riêng biệt) và hàm gọi lại.

jQuery(document).ready(function() { 
    jQuery("#<%= AreaListBox.ClientID %>").click(function() { 
     updateRegions(<%= AreaListBox.ClientID %>); 
    }); 
}); 

function updateRegions(areaId) { 
    jQuery("h2").html("AreaId:" + areaId); 

    jQuery.getJSON("/Locations.aspx/GetRegions?" + areaId, 
     function (data, textStatus) { 
      debugger; 
     }); 
} 

Hãy cho tôi biết nếu nó hoạt động!

0

Bạn cũng có thể sử dụng một getJSON, nhưng bạn nên thay đổi WebMethod trong trường hợp đó. Bạn nên trang trí nó với:

[WebMethod(EnableSession = true)]  
[ScriptMethod(UseHttpGet =false, ResponseFormat = ResponseFormat.Json)] 

Thực hiện việc nhận được có thể không phải là điều bạn mong muốn.

Các vấn đề liên quan