Ajax POST数据未发送到ASP.NET中的Page_Load方法

时间:2016-10-18 09:12:45

标签: javascript c# asp.net ajax webforms

我基本上是尝试将我的javascript函数中的一些测试值发送到ASP.NET Web窗体页面中的Page_Load方法。

但是,在调试时,我注意到请求数据为空,没有通过条件

代码:

Test.aspx文件

<form id="form1" runat="server">
        <div>
            <input type="button" onclick="senddata()" />
        </div>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        <script>
            function senddata() {
                var testdata = "checkcheck";

                $.ajax({
                    type: 'POST',
                    url: '/test.aspx',
                    data: { "data": testdata},
                    success: function (msg) {
                        console.log(msg);
                    }
                });
            }
        </script>
</form>

代码背后:

protected void Page_Load(object sender, EventArgs e)
{
    //doesn't go beyond this when I click the button
    if (!string.IsNullOrEmpty(Request.Form["data"]))
    {
        string resp = "working";
        Response.Write(resp );
        Response.End();
        return;
    }
}

知道为什么没有从后面的代码中收到数据?这是一个非常简单的例子,我想知道为什么。

2 个答案:

答案 0 :(得分:0)

&#34;的Request.Form [&#34;数据&#34;]&#34;最初为null,因为&#39;数据中没有值。 但是当你打电话给&#34; test.aspx&#34;在ajax方法上,它再次调用pageload事件并将Request.Form [&#34; data&#34;]重置为null。

除此之外,您应该创建一个Web方法并在senddata()函数中调用该方法。

答案 1 :(得分:0)

感谢您的所有回复!我设法通过进行以下更改来修复它:

〜/ App_Start / RouteConfig.cs

我改变了:settings.AutoRedirectMode = RedirectMode.Permanent;

settings.AutoRedirectMode = RedirectMode.Off;

这解决了这个问题。我不知道这种配置是如何进入的。我在创建项目时将其添加到RouteConfig中。希望这有助于某人。