我正在尝试webmethod使用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."
首先,如果web方法在页面类中,而不在Web服务类中,则它应该是静态的。
其次,传输的数据实际上不是字符串,而是对象,因此将其更改为:
var dataString = { 'value': value };
第三件事,“类型”用于旧版本的jquery,您应该将ajax调用更改为:
method: "GET", url: pagePath, data: dataString, contentType: "application/json; charset=utf-8", dataType: "json",...
或在服务器端更改此功能以获取帖子调用,方法是删除
UseHttpGet = true