我无法获得ajax调用以在网页上工作。 WebMethod工作得很好。
我可能会看到的一个潜在问题是,调用ajax方法的代码位于UserControl中,该UserControl嵌入在母版页中的内容页面中。只有在验证.Net身份验证后才能访问此页面。我不知道是否有任何此事,我只是包含这些信息,因此这个问题没有隐藏的方面。
另一个潜在问题可能出在Ajax调用本身。我只是看不出问题是什么。最令人困惑的是,ajax调用中的成功方法运行..没有失败。更令人困惑的是,如果我将WebMethod的名称完全更改为其他内容,则ajax调用的成功方法仍会运行。
知道这里可能出现什么问题吗?
var sendingThis = { x: 'abc', y: 'def', z: 'ghi' }
$.ajax(
{
type: "POST",
url: "TestPage.aspx/someMethod",
data: sendingThis,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success: function (msg)
{
//THIS STUFF GETS CALLED...always
},//end success
error: function ()
{
//DOESN'T GET CALLED
}
});
TestPage.aspx中的Codebehind方法:
[System.Web.Services.WebMethod]
public static void someMethod(string x, string y, string z)
{
//CODE THAT UPDATES DATABASE; *INDEPENDENTLY CONFIRMED WORKING*
}
调用代码的按钮..:
<asp:Button ID="btnSomeMethod" runat="server" OnClientClick="return someMethod(this);" Text="Runit" />
我有一些额外的观察结果可能会有所帮助。我尝试将ResolveURL
与.ajax()调用的URL一起使用,但是没有用。我还尝试EnableSession:true
作为Web方法的属性。我尝试将ScriptManager
插入到EnablePageMethods="true"
和ScriptReference
的页面中,该文件包含Ajax()调用.js文件。没有任何运气。到底是怎么回事?
另一个更新:我检查了HTTP流,以查看来自POST请求的响应标头。首先,它返回200 OK作为POST状态代码。请求似乎都很好。但是,在响应标题中,我得到了:
`"status":401,"headers":`
这与身份验证错误有关。
答案 0 :(得分:0)
答案归结为两个正斜杠//
..在RouteConfig.cs
中,您需要注释掉该行:
settings.AutoRedirectMode = RedirectMode.Permanent;
就是这样,就是这样。