2017-07-11 10 views
1

JSON.stringifyに値を渡して、サーバー側で受信する必要があります。JSON.stringifyでJQuery変数を渡し、サーバー側で受け取る方法は?

注:私はjQueryの変数を使用せずに直接値を渡すためにしようと、それは正常に動作しています。 jQueryの変数(それが働いている)がなければ

data: JSON.stringify({ "VendorID": "1106", "Date": "2016-12-30" }), 

私はjQueryの変数から値を渡すためにしようと、

エラーメッセージ

はそれがスローされます内部サーバーエラー

"プロシージャまたはファンクション 'FVendorAging'には、パラメータ '@Date'が指定されていませんでした。

jQueryの

if ($('#ContentPlaceHolder1_txtDate').val() !== '') { 
     dateAr = $('#ContentPlaceHolder1_txtDate').val().split('-'); 
     var newDates = dateAr[2] + '-' + dateAr[1] + '-' + dateAr[0]; 
     alert('Date is not empty = ' + newDates); //2017-07-11 
    } 

Ajaxコード

$.ajax({ 
     type:"POST", 
     contentType:"application/json;charset=utf-8", 
     url: "GPCreateCheque.aspx/BindData", 
     //data:"{}", 
     data: JSON.stringify({ "VendorID": +selecteVendorID, "Date": +newDates }), 
     dataType:"json", 
     success: function (data) { 
      alert("success = " + data.d[0].DocumnetNo); 
      for(var i=0;i<data.d.length;i++){ 
       $("#ContentPlaceHolder1_GridView1").append("<tr><td><input id=\"Checkbox" + i + "\" class=\"checkBoxClass\" type=\"checkbox\" /></td><td>" + data.d[i].DocumnetNo + "</td><td>" + data.d[i].Date + "</td><td class='ActualAmount' >" + data.d[i].OriginalAmount + "</td></tr>"); 
      } 
     }, 
     error:function(result){ 
      alert("Error"); 
     } 
    }) 

C#コードを使用して(YYYY-MM-DD)に(DD-MM-YYYY)から日付形式を変換

[WebMethod] 
    public static UserDetails[] BindData(string VendorID,string Date) 
    { 
     DataTable dt = new DataTable(); 
     List<UserDetails> details = new List<UserDetails>(); 

     string cs = ConfigurationManager.ConnectionStrings["GPMatajerAlSaudia"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(cs)) 
     { 
      SqlCommand cmd = new SqlCommand("FVendorAging", con); 
      cmd.CommandType = CommandType.StoredProcedure; 

      //cmd.Parameters.AddWithValue("@Date", "2017-07-11"); 
      //cmd.Parameters.AddWithValue("@VendorID", "1106"); 

      cmd.Parameters.AddWithValue("@Date", Date); 
      cmd.Parameters.AddWithValue("@VendorID", VendorID); 

      con.Open(); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(dt); 
      foreach (DataRow drow in dt.Rows) 
      { 
       UserDetails user = new UserDetails(); 
       user.DocumnetNo = drow["DocumnetNo"].ToString(); 
       user.Date = drow["Date"].ToString(); 
       user.OriginalAmount = drow["OriginalAmount"].ToString(); 
       details.Add(user); 
      } 
     } 
     return details.ToArray(); 
    } 

答えて

4

この問題は、日付変数の先頭に+という接頭辞が付いているために発生します。これは、日付の書式設定された文字列を​​として解析しようとしているため、問題が発生する可能性があります。

問題を解決するには、+を削除してください。また、contentTypeをJSONとして指定したので、JSON.stringifyを手動で呼び出す必要はありません.jQueryがそれを行うためです。試してみてください:

data: { 
    "VendorID": selecteVendorID, 
    "Date": newDates 
}, 
+0

天才、あなたは正しいです。それは働いている。しかし、もう9分は答えることができません。私は後で答えを受け入れるだろう。 –

関連する問題