2016-10-18 3 views
1

기본적으로 내 ASP.NET 웹 폼 페이지의 Page_Load 메서드로 자바 스크립트 함수에서 일부 테스트 값을 보내려고합니다.Ajax POST 데이터가 ASP.NET의 Page_Load 메서드로 전송되지 않습니다.

그러나 디버깅 할 때 요청 데이터가 null이고 이 조건을 통과하지 못하는 것으로 나타났습니다.

코드 : 뒤에

에서 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

모든 리소스가 이미로드되어 있기 때문에 페이지로드 이벤트가 발생하지 않기 때문에 호출되지 않습니다. 아약스 호출을 대신 처리하기 위해 웹 서비스 메서드를 만듭니다. – Sherlock

+0

페이지로드가 시작됩니다. 한 번 페이지가로드되고 버튼을 클릭하면 다시로드됩니다. 버튼을 클릭하면 데이터를 전송할 때 상태로 이동해야합니다. 그것은 단지 조건을 통과하지 못합니다. @MidTwo – Dinuka

+0

다른 json 키를 사용하거나 "데이터"를 다른 키 이름으로 바꾸거나 폼 배열의 값을 검사하십시오 – Sherlock

답변

0

"Request.Form ["data "]"는 '데이터'에 값이 없기 때문에 처음에는 null입니다. 하지만 ajax 메서드에서 "test.aspx"를 호출하면 pageload 이벤트를 다시 호출하고 Request.Form [ "data"]을 null로 다시 설정합니다.

대신에 웹 메소드를 작성하고 senddata() 함수에서 해당 메소드를 호출해야합니다.

0

답장 보내 주셔서 감사합니다. 이것은 해결 settings.AutoRedirectMode = RedirectMode.Permanent;

settings.AutoRedirectMode = RedirectMode.Off;

사람 :

내부 ~/App_Start/RouteConfig.cs

내가 변경 : 나는 다음과 같이 변경하여 그것을 해결하기 위해 관리 문제. 이 구성이 어떻게 구성되었는지 전혀 모르겠습니다. 프로젝트를 만들 때 RouteConfig에 추가되었습니다. 희망이 사람을 도움이됩니다.

관련 문제