2016-10-18 86 views
1

我基本上试图从我的JavaScript函数发送一些测试值到我的ASP.NET Web窗体页面中的Page_Load方法。Ajax POST数据没有被发送到ASP.NET中的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; 
    } 
} 

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

+0

这不会被调用,因为页面加载事件不会被触发,因为所有的资源已经加载,创建一个web服务方法,而不是为了处理你的AJAX调用 – Sherlock

+0

页面加载被激发。一旦加载页面,再次点击按钮时。当点击按钮时,它应该进入条件,因为我正在发送数据。它只是没有通过条件。 @MidTwo – Dinuka

+0

尝试使用另一个json键,用另一个键名替换“data”或检查表单数组的值 – Sherlock

回答

0

“Request.Form [”data“]”最初为空,因为'data'中没有值。 ,但是当您在ajax方法上调用“test.aspx”时,它会再次调用pageload事件并将Request.Form [“data”]重置为null。

取而代之,您应该创建一个web方法并在您的senddata()函数中调用该方法。

0

谢谢你所有的回应!我设法做以下修改来解决它:

〜/ App_Start/RouteConfig.cs

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

settings.AutoRedirectMode = RedirectMode.Off;

这解决了问题。我不知道这个配置是如何进入的。当我创建项目时,它被添加到RouteConfig中。希望这可以帮助某人。

相关问题