我必须在JSON.stringify
中传递值并在服务器端接收。
注意:当我尝试不使用JQuery变量而直接传递值时,它工作正常。
没有Jquery变量(正在工作)
data: JSON.stringify({ "VendorID": "1106", "Date": "2016-12-30" }),
当我尝试通过JQuery变量传递值时,
错误信息
它引发内部服务器错误
“过程或函数'FVendorAging'需要未提供的参数'@Date'。”
使用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/