1

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
3
  • Change alert(textStatus); to alert(errorThrown);, what do you get? Commented Nov 7, 2010 at 13:48
  • Missing WebMethod attribute - how do I add this? Commented Nov 7, 2010 at 14:02
  • use the Webmethod Attribute. Put [WebMethod] above the savenote() function. Commented Nov 7, 2010 at 15:22

1 Answer 1

1

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'}.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.