javascript - 如何在 JSON.stringify 中传递 JQuery 变量并在服务器端接收?

标签 javascript c# jquery json ajax

我必须在 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/

相关文章:

javascript - JS 和 JQuery 脚本冲突

javascript - 通过 mongoose 将条目插入 MongoDB 中的多级嵌套数组

jqueryMobile 将焦点设置在弹出窗口中的输入字段上

javascript - 在 AngularJS 中检测和验证客户端日期更改

c# - 与 UserControl 的双向绑定(bind)

c# - 忽略 WPF 应用程序中的 Alt+F4

c# - 如何使用 LINQ 计算列表中列表中列表的元素?

javascript - 如何在 javascript 的替换中循环遍历正则表达式的匹配项?

javascript - 切换 JQuery 插件

javascript - 我可以使用 jquery .each() 来计算表单中的每一行吗?