JQuery .ajax()函数调用不起作用,但成功方法运行

时间:2015-01-29 05:14:54

标签: javascript jquery asp.net ajax

我无法获得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":`

这与身份验证错误有关。

1 个答案:

答案 0 :(得分:0)

答案归结为两个正斜杠// ..在RouteConfig.cs中,您需要注释掉该行:

settings.AutoRedirectMode = RedirectMode.Permanent;

就是这样,就是这样。