I'm trying to call the webmethod fucntionality using AJAX but unable to get the appropriate results. I have googled my problem and found many solution but those didn't worked for me. Please guide me what I'm doing wrong. Help will be appreciated.
Cheers
Code Snippet
 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');
                    }
                }
            }
});
 }
Method in Behind Code file
    [WebMethod]
    [ScriptMethod(UseHttpGet = true)]
    public string getUsername(string value)
    {
        return "True";
    }
EXCEPTION
 ExceptionType: "System.InvalidOperationException"
  Message: "An attempt was made to call the method 'getUsername' using a        POST request, which is not allowed."
                First, it the webmethod is in the page class, and not in a Webservice class, then it should be static.
Second, the data transfered is not really a string, but an object, so change it to:
var dataString = { 'value':  value  };
Third thing, "type" is for older versions of jquery, you should either change your ajax call to:
method: "GET",
url: pagePath,
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",...
Or change the function in the server side to get post calls, by removing the
UseHttpGet = true
                        Probably you need to add static to your method declaration as below
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string getUsername(string value)
{
   return "True";
}
if this isn't the case, you could F12 the browser->network then click on the error message to see it briefly.
Concerning the reported issue,the problem with get request, try to make it post
The Answer is here :link
the problem is with the annotation I was using the [ScriptMethod(UseHttpGet = true)] which causing the error. just change the value from true to false.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With