Using jQuery's getJSON method with an ASP.NET Web Form

前端 未结 3 1415
清酒与你
清酒与你 2020-12-05 08:32

How do I go about calling a method on an ASP.NET Web Form page using the getJSON method on jQuery?

The goal is this:

  1. User clicks on a list item
相关标签:
3条回答
  • 2020-12-05 09:14

    You can also use a GetJSON, but you should alter the WebMethod in that case. You should decorate it with:

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

    Doing a get might not be what you desire.

    0 讨论(0)
  • 2020-12-05 09:29

    Here is a minimalistic example which should hopefully get you started:

    <%@ 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 讨论(0)
  • 2020-12-05 09:33

    I tweaked your code a bit. I added the server side output of the ClientID to the updateRegions method to pass it in. And I changed your getJSON method to pass in the url with a query string parameter (instead of separate data) and the call back function.

    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;
            });
    }
    

    Let me know if that works!

    0 讨论(0)
提交回复
热议问题