Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在使用javascript提交表单之前构造JSON_Javascript_Jquery_Form Submit - Fatal编程技术网

如何在使用javascript提交表单之前构造JSON

如何在使用javascript提交表单之前构造JSON,javascript,jquery,form-submit,Javascript,Jquery,Form Submit,关于JSFIDLE,我有以下内容。我想使用javascript提交此表单,并将JSON对象发送回我的控制器 如您所见,可以将多行添加到表中并提交。在我的JSON数据中,我希望跟踪为哪些行单击了哪些复选框。例如,根据下面的屏幕截图: 我希望JSON对象如下所示: {light:[{red:on}, {yellow:off},{green:on}], dark:[{red:off}, {yellow:off},{green:on}]}... var jsonObject = {}; $('.in

关于JSFIDLE,我有以下内容。我想使用javascript提交此表单,并将JSON对象发送回我的控制器

如您所见,可以将多行添加到表中并提交。在我的JSON数据中,我希望跟踪为哪些行单击了哪些复选框。例如,根据下面的屏幕截图:

我希望JSON对象如下所示:

{light:[{red:on}, {yellow:off},{green:on}], dark:[{red:off}, {yellow:off},{green:on}]}...
var jsonObject = {};
$('.input-row').each(function(index, row) {
    var innerObject = {};
    $(':checkbox', row).each(function(index, checkbox) {
        innerObject[checkbox.name] = checkbox.checked ? 'on' : 'off';
    });
    var key = $('input[type="text"]', row).val();
    jsonObject[key] = innerObject;
});
console.log(jsonObject);
// use jsonObject somehow

将表单序列化为JSON的最简单方法是使用
jQuery的serializeArray()


将表单序列化为JSON的最简单方法是使用
jQuery的serializeArray()


我提出的代码如下所示:

{light:[{red:on}, {yellow:off},{green:on}], dark:[{red:off}, {yellow:off},{green:on}]}...
var jsonObject = {};
$('.input-row').each(function(index, row) {
    var innerObject = {};
    $(':checkbox', row).each(function(index, checkbox) {
        innerObject[checkbox.name] = checkbox.checked ? 'on' : 'off';
    });
    var key = $('input[type="text"]', row).val();
    jsonObject[key] = innerObject;
});
console.log(jsonObject);
// use jsonObject somehow
我们正在创建一个空对象,它将成为我们的整个JSON对象(称为
jsonObject

然后,我们对每一行输入进行迭代(我在这些行中添加了一个
input row
类,以便可以轻松地选择它们)

对于每一行,我们创建另一个空对象(称为
innerObject
),然后遍历其复选框。对于每个复选框,我们将一个属性添加到
innerObject
:键是复选框的
名称
属性/属性,值是
打开
关闭
,具体取决于
选中
状态。最后,我们获取该行上输入的
文本的值,作为
jsonObject
中的键,并向其中添加属性


下面是上述代码的一部分。

我提出的代码如下所示:

{light:[{red:on}, {yellow:off},{green:on}], dark:[{red:off}, {yellow:off},{green:on}]}...
var jsonObject = {};
$('.input-row').each(function(index, row) {
    var innerObject = {};
    $(':checkbox', row).each(function(index, checkbox) {
        innerObject[checkbox.name] = checkbox.checked ? 'on' : 'off';
    });
    var key = $('input[type="text"]', row).val();
    jsonObject[key] = innerObject;
});
console.log(jsonObject);
// use jsonObject somehow
我们正在创建一个空对象,它将成为我们的整个JSON对象(称为
jsonObject

然后,我们对每一行输入进行迭代(我在这些行中添加了一个
input row
类,以便可以轻松地选择它们)

对于每一行,我们创建另一个空对象(称为
innerObject
),然后遍历其复选框。对于每个复选框,我们将一个属性添加到
innerObject
:键是复选框的
名称
属性/属性,值是
打开
关闭
,具体取决于
选中
状态。最后,我们获取该行上输入的
文本的值,作为
jsonObject
中的键,并向其中添加属性


下面是上述代码的一部分。

您应该构建自己的JSON字符串,然后使用
jQuery.parseJSON()
循环表中的所有tr元素并收集所需信息

下面的代码是根据fiddler中的html开始的

var strJSON = '';

$("#blacklistgrid tr").each(function (i) { 
    if (i != 0) 
    { 
        var currentRow = $(this)
        strJSON += "{ " + currentRow.find("input[name='shade']").val() +"[{red: currentRow.find("input[name='red']").is(":checked")} ]   }";
    } 
});

var theJSON = jQuery.parseJSON(strJSON);

请检查JSON字符串的正确格式,我无法检查代码是否正常工作,但您可以在此处获取逻辑。

您应该构建自己的JSON字符串,然后使用
jQuery.parseJSON()
循环表中的所有tr元素并收集所需信息

下面的代码是根据fiddler中的html开始的

var strJSON = '';

$("#blacklistgrid tr").each(function (i) { 
    if (i != 0) 
    { 
        var currentRow = $(this)
        strJSON += "{ " + currentRow.find("input[name='shade']").val() +"[{red: currentRow.find("input[name='red']").is(":checked")} ]   }";
    } 
});

var theJSON = jQuery.parseJSON(strJSON);

请检查JSON字符串的正确格式,我无法检查代码是否正常工作,但您可以在这里获得逻辑。

这不会让他接近他想要的对象结构。使用它和修改服务器端代码可能更容易,或者编写jQuery函数以提供他想要的格式的JSON可能更容易。嗯,我得到了这种类型的JSON:
[{“name”:“red”,“value”:“on”},{“name”:“green”,“value”:“on”},{“name”:“green”,“value”:“on”},{“name”:“green”,“value”:“on”}]
这里是fiddle的更新链接:但这不会让他接近他想要的对象结构。使用它和修改服务器端代码可能更容易,或者编写jQuery函数以提供他想要的格式的JSON可能更容易。嗯,我得到了这种类型的JSON:
[{“name”:“red”,“value”:“on”},{“name”:“green”,“value”:“on”},{“name”:“green”,“value”:“on”},{“name”:“green”,“value”:“on”}]
这里是fiddle的最新链接:如果你要接受我的建议,请使用malsup,我快速查看了一下。但它并没有把结果以我想要的格式…如果你要接受我的建议,请使用malsup's,我快速查看了一下。但这并不是我想要的结果格式…安东尼的解决方案是更好和正确的。我不知道为什么我会想到从字符串解析。安东尼的解决方案是更好和正确的。为什么我想从字符串解析我不知道。谢谢。jsFiddle目前似乎处于低迷状态。我会尽快试一试。代码看起来不错,谢谢。jsFiddle目前似乎处于低迷状态。我会尽快试一试。不过代码看起来不错