我试图使用AJAX调用webmethod
功能但无法获得适当的结果。我搜索了我的问题并找到了许多解决方案,但那些对我没有用。请指导我做错了什么。将不胜感激。
干杯
代码段
function checkUserNameExists() {
//initialization
var pagePath = window.location.pathname + "/getUsername";
var value = document.getElementById('control_userName').value;
var dataString = "{ 'value':'" + value + "' }";
$.ajax({
type: "GET",
url: pagePath,
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
error:
function (XMLHttpRequest, textStatus, errorThrown) {
},
success:
function (result) {
var flag = true;
if (result != null) {
flag = result.d;
if (flag == "True") {
alert('okay fine you are good');
}
else {
alert('try again');
}
}
}
});
}
代码文件背后的方法
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string getUsername(string value)
{
return "True";
}
异常
ExceptionType: "System.InvalidOperationException"
Message: "An attempt was made to call the method 'getUsername' using a POST request, which is not allowed."
答案 0 :(得分:4)
您可能需要在方法声明中添加静态,如下所示
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string getUsername(string value)
{
return "True";
}
如果不是这种情况,您可以使用F12浏览器 - >网络,然后点击错误消息进行简要查看。
关于报告的问题,get请求的问题,尝试将其发布
答案 1 :(得分:0)
这不是特定于此问题的,但是您可以检查一些事情以更好地了解导致问题的原因。
检查this post以获得更多详细信息。
答案 2 :(得分:0)
就我而言,问题是“数据”字段(均为GET和POST)。作为测试,请从AJAX调用中删除“数据”,并删除Web方法参数(如果可行),则问题出在“数据”字段的格式:
$.ajax({
type: "GET",
url: pagePath,
contentType: "application/json; charset=utf-8",
dataType: "json",
...
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public string getUsername()
{
return "True";
}
一些例子:
data: JSON.stringify({ "parameter": variable }) WORKS
data: JSON.stringify({ parameter: variable }) WORKS
data: '{"parameter": "' + variable + '"}' WORKS
data: '{parameter: ' + variable + '}' don't works
data: JSON.stringify({ 'parameter': 'value' }) WORKS
data: '{"parameter":"value"}' WORKS
data: "{'parameter':'value'}" WORKS
data: '{parameter:value}' don't works
data: {parameter:value} don't works
data: {"parameter":"value"} don't works
data: {'parameter':'value'} don't works