2012-05-03 7 views
0

ajax投稿を使用してwebhandler(ashx)にjqueryuiダイアログフォームに入力した値を送信しようとしました。 :json ajaxを使用してjqueryuiダイアログボックスからWebハンドラ[.ashx]に値を送信

Webhandler [login.ashx]

public class Login : IHttpHandler { 

    public void ProcessRequest (HttpContext context) { 
     context.Response.ContentType = "application/json"; 
     // string ID = context.Request.QueryString["ID"]; 
     //Want to pass full name , email and selected value of dropdown list 
     // then perform sql query 
     string fullname = "";//from ajax 
     string email = "";//from ajax 
     string scheme = "";//from ajax 
     docalculation(fullname, email , scheme); 
} 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    } 

      public void docalculation(string name, string email, string scheme) 
      { 
       SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["umbracoDbDSN"]); 
       conn.Open(); 
       SqlCommand cmd1 = conn.CreateCommand(); 
       cmd1.CommandText = "IF NOT EXISTS (SELECT * FROM XXX WHERE email = @XX) INSERT INTO dbo.schemeCustomers(CustomerName, CustomerEmail, schemeType, LoginDate) VALUES (@XX,@XX,@XX,@XX)"; 
       cmd1.Parameters.Add("@XX", SqlDbType.VarChar).Value = email; 
       cmd1.Parameters.Add("@XX", SqlDbType.VarChar).Value = scheme; 
       cmd1.Parameters.Add("@XX", SqlDbType.DateTime).Value = DateTime.Now; 
       int result1 = Convert.ToInt32(cmd1.ExecuteScalar()); 
       conn.Close(); 
       Response.Redirect("/home/schemes.aspx");// response.redirect doesnt works in handler?? 
      } 

} 

.aspxの

$('#logintest').click(function (e) { 
        e.preventDefault(); 
        var selectedValue = $('#DropDownList2').val();var fullname = $('#name').val();var email = $('#email').val(); 
        var jsonData = '{ "fullname":" + fullname +", "email": " + email +" , "selectedValue" : " + selectedValue +"}'; 
        $.ajax({ 
         url: "/login.ashx", 

         type: "POST", 
         data : JSON.stringify({ fullData: jsonData }), 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         success: function (response) { 
          if (response.d != "") { 
           alert(response.d); 

          } 
         } 


        }); 
       }); 

       <div id="dialog-form" title="Group Scheme Login"> 
       <form> 
       <fieldset> 
       <label for="name"> 
        Full Name</label> 
       <input type="text" name="name" id="name" class="text ui-widget-content ui-corner-all" /> 
       <br /> 
       <label for="email"> 
        Email</label> 
       <input type="text" name="email" id="email" value="" class="text ui-widget-content ui-corner-all" /> 
       <br /> 
       <select id="DropDownList2"> 
        <option value="product1">Camera</option> 
        <option value="product2">DVD</option> 
        <option value="product3">AC</option> 
       </select> 
       </fieldset> 
       </form> 
       <br /> 
       <a href="" id="logintest">Login </a> 
       </div> 

誰でもハンドラにパラメータを渡す方法で私を助けることができ、どのような援助私はにコメントを追加することはできません

var selectedValue = $('#DropDownList2').val(), 
    fullname = $('#name').val(), 
    email = $('#email').val(); 

$.ajax({ 
     url: "/login.ashx", 
     type: "POST", 
     data : { fullname: fullname, 
        email:email, 
        selectedValue:selectedValue }, 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
       // do stuff 
     } 

答えて

2

あなたは次のようにあなたのashxHttpContext.Current.Requestを使用する必要があります私たちがCodrin Eugeniuに行くときに返信します。ただ削除する

contentType: "application/json; charset=utf-8", 

もう一度やり直してください。それがうまくいくことを望みます。

+0

私はそれを試みましたが、エラーが発生しました:エラー非呼び出し可能なメンバー 'System.Web.HttpRequest.Params'をメソッドのように使用することはできません。 –

+0

ええ、私はそれを更新しました。今すぐ働かなければならない。 –

+0

Google Chromeのコンソールを確認して、次のように取得します。/login.ashx 500(内部サーバーエラー) –

0

string fullname = HttpContext.Current.Request.Form("fullname"); 
... 

と、このようなあなたのAJAX呼び出しを更新しますか提案が高く評価されます、おかげで

関連する問題