AJAX表示WEBMETHOD成功,但是它实际上从未触发背后代码的web方法

问题描述 投票:0回答:1

我经历了无数的帖子,无法弄清楚我在做什么错。我有一个asp.net网站,后面带有C#代码。在其中,我需要.aspx页上的javascript函数来触发aspx.cs页上的方法。我写了以下代码:

。aspx页(我的ScriptManager ::

 </head>
 <body id="bodycontainer">

<asp:ScriptManager ID="ScriptManager2" runat="server" EnablePartialRendering="false" EnablePageMethods="true"/>

。aspx页面上使用ajax的Javascript函数:

  function ValidateForm() {
        $.ajax({
            type: "POST",
            url: "default.aspx/Save",
            data: {},
            contentType: "application/json; charset=utf=8",
            //  dataType: "json",  // NOT NEEDED IF NO RETURN VALUE
            async: true,  // OPTIONAL
            success: function (msg) {
                alert("success");
            },
            error: function (msg) {
                alert("failed");
            }
        });
    }

aspx.cs页面(代码隐藏页面):

 [WebMethod]
    public static void Save()
    {
      //  throw new DivideByZeroException(); // USED THIS TO VERIFY IF WEBMETHOD IS HIT.
        _default obj = new _default();
        obj.Show("Save Method Works"); // THIS IS A POPUP MESSAGE BOX
        obj.btnSave_Click(); // THIS IS THE SAVE METHOD ON THIS PAGE THAT WE WANT TO RUN
    }


 public void btnSave_Click()
 {
 // METHODS CODE HERE
 }

ValidateForm函数以“成功”响应,但是,它似乎甚至没有触发“代码隐藏”页面上的WebMethod。如果我使用IE在控制台网络选项卡上,我可以看到POST请求。但是,在方法背后的代码上,它永远不会在调试中触发断点(不确定是否应该根据某些帖子)。在某一时刻,我插入了一行以引发DivideByZero异常,但是它从未引发过该异常。

因此,总而言之,我得到了确认,他通过F12控制台网络选项卡中的成功消息和POST消息对WEBMETHOD进行了Java脚本调用。但是,似乎WEBMETHOD从未触发过。任何帮助,将不胜感激!

javascript c# asp.net ajax webmethod
1个回答
-1
投票

您可以尝试更改

url: "default.aspx/Save", 

for

url: "Save",
© www.soinside.com 2019 - 2024. All rights reserved.