2017-07-11 49 views
1

我必須通過JSON.stringify的值並在服務器端接收。如何在JSON.stringify中傳遞JQuery變量並在服務器端接收?

注:當我嘗試直接傳遞值而不使用JQuery變量時,它工作正常。

沒有jQuery的變量(它的工作)

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

當我試圖通過JQuery的變量傳遞價值,

錯誤消息

它拋出內部服務器錯誤

「過程或函數'FVendorAging'需要參數'@Date',它沒有提供。」

轉換日期格式從(DD-MM-YYYY),以使用JQuery(YYYY-MM-DD)

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#代碼

[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分鐘的回答。我稍後會接受答案。 –

相關問題