thegunner
thegunner

Reputation: 7163

asp.net jquery ajax post

I'm trying to call an asp.net method using jquery/ajax from a button click on a modal dialog window. But all I seem to get is and alert saying "error". I've seen many similar examples for this online but I can't seem to get it to work. The page/method I'm calling (newcall.aspx/savenote) is the same page as all the jquery/ajax etc.

Anyone any ideas?

Thanks,

        var dlg = jQuery("#dialog2").dialog({
            bgiframe: false,
            autoOpen: true,
            height: 410,
            width: 800,
            modal: true,
            show: 'Transfer',
            hide: 'Transfer',
            draggable: true,
            resizable: true,
            buttons: {
                "Cancel": function() {
                    $(this).dialog("close");
                },
                "Save": function() {
                    var txtnote = document.getElementById("<%=txtNote.ClientID %>").value;

                    $.ajax({
                        type: "POST",
                        url: "newcall.aspx/savenote",
                        data: txtnote,
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",                            
                        success: function(msg) {
                            alert(msg);
                        },        
                        error: function(XMLHttpRequest, textStatus, errorThrown) {
                            alert(textStatus);
                        }
                    });

                    $(this).dialog("close");
                }
            }
        }

        );

Code behind method:( At the moment I'm just returning "ok")

Public Function savenote() As String
    Return "ok"
End Function

Upvotes: 1

Views: 2402

Answers (1)

Dave Ward
Dave Ward

Reputation: 60580

You need to add the WebMethod attribute, declare the page method as Shared, and match the data you're sending with the method's signature. This is how you should change your server-side method:

<WebMethod()>_
Public Shared Function savenote() As String
  Return "ok"
End Function

You may get away with not changing your data parameter, but probably not since it's invalid JSON. Try changing your data parameter to just {} for now. When you're ready to start passing txtnote in to your server-side method, you'll want to pass that as {txtnote: 'Your note string here'}.

Upvotes: 1

Related Questions