我花了最后几个小时争取写一些javascript和jquery。
基本上我试图遍历一个表,检查TD中是否存在属性,如果它确实将其信息添加到数组中并将其发回服务器
我的代码(我相信它可能会更好)
$("#save-changes").click(function () {
var param = [];
var table = $("#products-grid > .t-grid-content > table tbody tr").each(function (i) {
//find checkboxes using class
var td = ($(this).find("td:nth-child(2)").find(".cb"));
var attr = $(td).attr('data-item');
if (typeof attr !== 'undefined' && attr !== false) {
console.log(td);
param.push({ "itemId": attr, "productId": td.val() });
}
});
console.log(param);
$.ajax({
url: '@Url.Action("ApplyProduct")',
data: param,
type: 'POST',
success: function (e) {
我现在仍然试图将数组传回服务器。作为服务器可以理解的参数,我需要做什么才能将数据发送回服务器?
任何帮助都会很棒!
答案 0 :(得分:0)
添加两个参数
dataType: "json",
data: JSON.stringify(param)
到您的.ajax电话。
创建一个对象服务器端,它有两个int属性int,名为itemId和productId,然后创建一个JsonResult路由,它接收你发布的对象数组(在你的情况下这将是ApplyProduct)。
答案 1 :(得分:0)
你不能将数组发送到服务器,它们必须是字符串。
你可以像这样加入阵列
param.join(";");
将创建一个字符串,每个值由a分隔;
您还需要将数据选项指定为键值json
$.ajax({
url: '@Url.Action("ApplyProduct")',
data: {
param : param
},
type: 'POST',
然后在服务器端,您可以将字符串拆分回数组
$param = explode(";",$_POST['param']);