问题描述:

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

网友答案:

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

相关阅读:
Top