我的代码中有一个WebMethod,我正在通过AJAX调用。该方法在使用GET请求时有效,但我更喜欢使用POST,我也想知道为什么这不起作用和/或我做错了什么。
的JavaScript
$(document).ready(function () {
$.ajax({
url: "Default.aspx/HelloWorld",
method: "POST",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
$("#test1").html(data.d);
},
error: function (err) {
$("#errOutput").text("ERROR: " + err.responseText);
}
});
});
C#
[WebMethod]
[ScriptMethod(UseHttpGet=false)]
public static string HelloWorld()
{
return "Hello World!";
}
错误
Message:
"An attempt was made to call the method \u0027HelloWorld\u0027 using a
GET request, which is not allowed.",
StackTrace:
"at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData
methodData, HttpContext context)\r\n
at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext
context, WebServiceMethodData methodData)",
ExceptionType:"System.InvalidOperationException"
答案 0 :(得分:2)
看一些jQuery documentation我认为您使用了错误的属性。我怀疑这个:
method: "POST"
应该是
type: "POST"
method
对我来说也是一个更明智的名字,但我们去了......
(免责声明:我自己从未使用过jQuery ......这个答案完全基于文档。)