答案 0 :(得分:2)
我快速创建了一个示例应用程序并观察到您应该使用 POST而不是GET 。当我应用以下设置时,我能够点击GetAllKeywords方法并成功获得响应。
<强> SCRIPT 强>
<script>
$.ajax({
type: "POST",
url: "WebForm1.aspx/GetAllKeywords",
data: JSON.stringify({
keywordIds: ['1', '2']
}),
contentType: "application/json; charset=utf-8",
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
},
complete: function (jqXHR, status) {
alert("complete: " + status + "\n\nResponse: " + jqXHR.responseText);
}
});
</script>
<强> C#强>
使用POST代替GET
[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public static string GetAllKeywords(string[] keywordIds)
{
return "it worked";
}
<强> DEBUG 强>
来自调试模式的快照,
答案 1 :(得分:0)
您是否在web.config上启用了web服务的get方法?
<configuration>
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
</webServices>
</system.web>
</configuration>
答案 2 :(得分:0)
首先创建数组变量,然后像下面那样对该变量进行stringfy:
$(document).ready(function () {
var keys = new Array();
keys[0] = "1";
keys[1] = "2";
keys[2] = "3";
$.ajax({
type: "POST",
url: "EditView.aspx/GetAllKeywords",
data: JSON.stringify({keywordIds:keys }),
contentType: "application/json; charset=utf-8",
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
},
complete: function(jqXHR, status) {
alert("complete: " + status + "\n\nResponse: " + jqXHR.responseText);
}
});
});