Chiamare un ‘WebMethod’ con jQuery nel ASP.NET WebForms

Ho impostare un punto di interruzione nel seguente WebMethod ma non sono mai colpire il punto di interruzione.

cs:

[WebMethod]
public static string search()
{
    return "worked";
}

aspx:

  function search() {
    $.ajax({
        type: "POST",
        url: "ProcessAudit/req_brws.aspx/search",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            alert(msg)
        }
    });
}
<button id = "btnSearch" onclick = "search()" >Search</button>
InformationsquelleAutor marknery | 2011-08-03



4 Replies
  1. 28

    Assicurarsi che è stata attivata la pagina metodi nel vostro ScriptManager elemento:

    <asp:ScriptManager ID="scm" runat="server" EnablePageMethods="true" />

    e che hanno annullato l’azione predefinita del pulsante restituendo false all’interno del gestore onclick, altrimenti la pagina esegue un postback completo e la vostra chiamata AJAX potrebbe mai avere il tempo di finire. Ecco un esempio funzionante:

    <%@ Page Language="C#" %>
    <script type="text/c#" runat="server">
    [System.Web.Services.WebMethod]
    public static string search()
    {
        return "worked";
    }
    </script>
    
    <!DOCTYPE html>
    <html>
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="Form1" runat="server">
            <asp:ScriptManager ID="scm" runat="server" EnablePageMethods="true" />
            <button id="btnSearch" onclick="search(); return false;" >Search</button>
        </form>
    
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
        <script type="text/javascript">
            function search() {
                $.ajax({
                    type: 'POST',
                    url: '<%= ResolveUrl("~/default.aspx/search") %>',
                    data: '{ }',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'json',
                    success: function (msg) {
                        alert(msg.d)
                    }
                });
            }
        </script>
    </body>
    </html>

    Un’altra possibilità è quella di iscriversi al gestore click discretamente:

    <button id="btnSearch">Search</button>

    e quindi all’interno di un file javascript separato:

    $('#btnSearch').click(function() {
        $.ajax({
            type: 'POST',
            url: '<%= ResolveUrl("~/default.aspx/search") %>',
            data: '{ }',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (msg) {
                alert(msg.d)
            }
        });
        return false;
    });

    Si può anche notare l’uso del msg.d di proprietà all’interno del successo di callback che ASP.NET utilizza per avvolgere l’intera risposta in così come l’utilizzo del ResolveUrl metodo per generare correttamente l’url per la pagina di metodo, invece di inserirli nel codice.

    • hmmm… darins un po ‘ male… non c’è bisogno di utilizzare scriptmanager a tutti. anche charset è inutile e così è datatype:json 🙂
    • Grazie l’url è sbagliato, l’utilizzo di ” <%=ResolveUrl(“~/default.aspx/di ricerca”) %>’
    • Ho impostato allo stesso modo, ma la mia risposta non è definito. Qualche idea del perché? Ho il seguente errore nella console: Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  2. 6

    Più ottimizzato chiamata sarà

    function search() {
        $.ajax({
            type: "POST",
            url: '<%= ResolveUrl("~/ProcessAudit/req_brws.aspx/search") %>',
            data: "{}",
            contentType: "application/json",
            success: function (msg) {
                msg = msg.hasOwnProperty("d") ? msg.d : msg;
                alert(msg);
            }
        });
    }

    Non c’è bisogno di fornire un asp:ScriptManager a tutti.

    Risorsa: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/

    • Chrome sembra non come questo link a causa di malware sospetto, ma non voglio rimuoverlo in quanto non ho questo post. virustotal.com/en/url/…
  3. 1

    Corrente pulsante è causato da un postback completo.
    Basta aggiungere un type=”button” per il pulsante per evitare questo.

     <button id = "btnSearch" type="button" onclick = "search()" >Search</button>

    -Shazzam yo

  4. -1

    Come implementare ASP.Net metodo di web using JQuery AJAX ?

    Pagina HTML:

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    
        <title></title>
        <script src="js/jquery.min.js"></script>
        <script>
            function SubmitData() {
    
                var name = 'Ram';
                var gender = 'Male';
                var age = '30';           
    
                $.ajax({
                    type: "POST",
                    url: "ajaxcall.aspx/SaveData",
                    data: '{"name":"' + name + '", "gender":"' + gender + '", "age":"' + age + '"}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    beforeSend: function () {
                        $('#loader').show();
                    },
                    success: function (data) {
    
                        alert(data.d);
                        $('#loader').hide();
                    },
                    error: function (msg) {
                        //alert('3');
                        msg = "There is an error";
                        alert(msg);
                        $('#loader').hide();
                    }
                });
    
            }
        </script>
    </head>
    <body>
        <div id="loader" style="display: none;">
            <img src="ajax-loader.gif" />
        </div>
        <a href="#" onclick="SubmitData();">Submit</a>
    </body>
    </html>

    Codice dietro:

    [WebMethod]
        public static string SaveData(string name, string gender, string age) {
        try {
            return "OK";
        } catch (Exception ex) {
            return ex.Message;
        } finally { }
    }

    Risorsa:
    http://www.sharepointcafe.net/2016/10/how-to-call-aspnet-web-method-using-jquery-ajax.html

Lascia un commento