我必须在 JSON.stringify
中传递值并在服务器端接收。
Note: when I try to pass the value directly without using JQuery variable, It's working fine.
没有 Jquery 变量(它正在工作)
data: JSON.stringify({ "VendorID": "1106", "Date": "2016-12-30" }),
当我尝试通过JQuery 变量 传递值时,
错误信息
it throws internal server error
"Procedure or function 'FVendorAging' expects parameter '@Date', which was not supplied."
使用 JQuery 将日期格式从 (dd-MM-yyyy) 转换为 (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();
}
最佳答案
问题是因为您在日期变量前加上了 +
。这意味着您正在尝试将日期格式的字符串解析为 Number()
- 这会导致问题。
要解决此问题,只需删除 +
。另请注意,由于您已将 contentType
指定为 JSON,因此您无需手动调用 JSON.stringify
,因为 jQuery 会为您执行此操作。试试这个:
data: {
"VendorID": selecteVendorID,
"Date": newDates
},
关于javascript - 如何在 JSON.stringify 中传递 JQuery 变量并在服务器端接收?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45032504/