一尘不染

从javascript调用webmethod时ASP.NET 500内部服务器错误

ajax

我正在尝试webmethod使用AJAX
调用功能,但无法获得适当的结果。我已经搜索了我的问题并找到了许多解决方案,但是这些解决方案对我没有用。请指导我我在做什么错。帮助将不胜感激。

干杯

程式码片段

 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."

阅读 314

收藏
2020-07-26

共1个答案

一尘不染

首先,如果web方法在页面类中,而不在Web服务类中,则它应该是静态的。

其次,传输的数据实际上不是字符串,而是对象,因此将其更改为:

var dataString = { 'value':  value  };

第三件事,“类型”用于旧版本的jquery,您应该将ajax调用更改为:

method: "GET",
url: pagePath,
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",...

或在服务器端更改此功能以获取帖子调用,方法是删除

UseHttpGet = true
2020-07-26