我一直在努力让我的
jquery调用webmethod工作.我被服务器以“401 Unauthorized”响应退回.我必须在web.config或其他阻止成功调用的地方设置不正确.
非常感谢您的见解!
button.OnClickAction = "PageMethod('TestWithParams',['a','value','b',2],'AjaxSucceeded','AjaxFailed'); return false;";
function PageMethod(fn,paramArray,successFn,errorFn) { var pagePath = window.location.pathname; var urlPath = pagePath + "/" + fn; //Create list of parameters in the form: //{"paramName1":"paramValue1","paramName2":"paramValue2"} var paramList = ''; if (paramArray.length > 0) { for (var i = 0; i < paramArray.length; i += 2) { if (paramList.length > 0) paramList += ','; paramList += '"' + paramArray[i] + '":"' + paramArray[i + 1] + '"'; } } paramList = '{' + paramList + '}'; //Call the page method $.ajax({ type: "POST",url: pagePath + "/" + fn,contentType: "application/json; charset=utf-8",data: paramList,timeout: 10000,dataType: "json",success: function(result) { alert('Overjoyed'); },error: function(result) { alert('No joy'); } }); }
public partial class WebLayout : System.Web.UI.Page { [WebMethod()] public static int TestNoParams() { return 1; } [WebMethod()] public static string TestWithParams(string a,int b) { return a + b.ToString(); } ...
在Firebug控制台中看到的响应
json: {"Message":"Authentication Failed.","StackTrace":null,"ExceptionType":"System.InvalidOperationException"}
和
"NetworkError: 401 Unauthorized - http://localhost/Care-Provider-Home/Profile/Personal-Profile.aspx/TestWithParams" TestWithParams
我查看并阅读了关于这个主题的常用网站(Encosia等),但是有用.要么我错过了一个关键部分,要么我的环境的安全参数中存在一些阻止呼叫的微妙之处.
以下是一些可能影响您诊断的潜在有用信息:
>代码隐藏中的Web方法
>使用Sitecore CMS(似乎没有干涉,永远不知道)
> IIS7
> .NET 3.5
> jQuery 1.3.2
我期待着您的见解和指导 – 谢谢!