2016-10-18 12 views
1

基本的に、私のJavaScript関数からASP.NET Webフォームページの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

すべてのリソースが既にロードされているためページロードイベントが発生しないため、これは呼び出されません.Ajaxコールを処理する代わりにWebサービスメソッドを作成してください。 – Sherlock

+0

ページが読み込まれます。ページが読み込まれると、ボタンがクリックされたときにもう一度読み込まれます。ボタンをクリックすると、データを送信している状態になるはずです。それは単に条件を通過しません。 @MidTwo – Dinuka

+0

別のjsonキーを使用しようとすると、 "data"を別のキー名に置き換えたり、フォーム配列の値を調べたりします。 – Sherlock

答えて

0

"Request.Form [" data "]"は、 'data'に値がないため、最初はnullです。 しかし、ajaxメソッドで "test.aspx"を呼び出すと、再びpageloadイベントが呼び出され、Request.Form ["data"]がnullとしてリセットされます。

代わりに、Webメソッドを作成し、そのメソッドをsenddata()関数で呼び出す必要があります。

0

ありがとうございました。これが解決settings.AutoRedirectMode = RedirectMode.Permanent;

settings.AutoRedirectMode = RedirectMode.Off;

へ:

インサイド〜/ App_Start/RouteConfig.cs

私が変更されました:私は、次の変更を加えることで、それを修正するために管理しました問題。私はこの設定がどのようにそこに入ったのか分かりません。プロジェクトを作成したときにRouteConfigに追加されました。これが誰かを助けることを望みます。

関連する問題