【问题标题】:How to change checkbox follow JSON string?如何更改复选框跟随 JSON 字符串?
【发布时间】:2015-08-29 23:11:30
【问题描述】:

我想更改复选框跟随 JSON 字符串。但我不知道怎么做。 这是我的 JSON 字符串,“1”表示选中,“0”表示未选中

[{"Group_Product":"G04","Orange":1,"Banana":0,"Apple":1,"Candy":0,"Food":1}]

还有html代码。

<table id=table_product>
<tr><td><input type="checkbox" class="checkbox1" id="Orange" name="check[]" />Orange</td></tr>
<tr><td><input type="checkbox" class="checkbox1" id="Banana" name="check[]" />Banana</td></tr>
<tr><td><input type="checkbox" class="checkbox1" id="Apple" name="check[]" />Apple</td></tr>
<tr><td><input type="checkbox" class="checkbox1" id="Candy" name="check[]" />Candy</td></tr>
<tr><td><input type="checkbox" class="checkbox1" id="Food" name="check[]" />Food</td></tr>   
</table>

好的,我使用这种方式。我将在 Object JSON 中获取名称和值,然后与复选框的 id 进行比较并检查它。

contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                         var obj = jQuery.parseJSON(data.d);
                            for (var item in obj[0]) {
                                if (item.valueOf > 0) {
                                    document.getElementById(item).checked = true;
                                }
                            }
                    },
                    error: function (data) {
                        console.log(data.d);
                    }

如果您有想法或解决方案,请与我分享。

【问题讨论】:

  • Json 包含布尔值 - 使用 truefalse 而不是 10
  • 这里的主要问题是更改JSON下的复选框,JSON字符串更长我可以根据1和0或true和false进行更改。我认为这只是比较= 1或=“true”是检查。不是很重要
  • 不,它们不一样,不同。

标签: javascript jquery ajax json checkbox


【解决方案1】:

在您的复选框中添加一个 ID...

<input type="checkbox" class="checkbox1" id="chkApple"  name="check[]" />Apple

然后检查它们如下:

success: function (data) {
    var obj = jQuery.parseJSON(data.d);
    $("#chkApple").prop('checked', obj[0].Apple > 0);
}

或者更好的是,将您的 Json 更改为使用布尔值而不是整数,然后您会得到...

    $("#chkApple").prop('checked', obj[0].Apple);

请注意,我们使用的是obj[0],因为您的 Json 是当前包含单个对象的列表。你是故意的吗?

如果没有,请从 json 中删除 []...

{"Group_Product":"G04","Orange":true,"Banana":false,"Apple":true,"Candy":false,"Food":true}

然后就变成了

    $("#chkApple").prop('checked', obj.Apple);

在 cmets 中回答您的问题...

var obj = jQuery.parseJSON(data.d);
for (var item in obj[0]) {
    document.getElementById(item).checked = obj[0][item] > 0;
}

【讨论】:

  • 好的,我在我的复选框中添加了 id ,与 JSON 对象 &lt;input type="checkbox" class="checkbox1" id="Orange" name="check[]" /&gt;Orange 的名称相同。而且我不知道我可以使用这种方式var obj = jQuery.parseJSON(data.d); for (var i = 0; i &lt; obj.properties; i++) { $('"#' + obj.properties[i].name + '"').prop('checked', obj.properties[i].value &gt; 0); }
  • 这是因为属性列表是动态的吗?您采用的方法似乎完全有效,但我需要查看示例页面和/或查看调试内容以找出它可能无法正常工作的原因。请注意,这种方法有点脆弱,因为您希望不会有任何 Id 冲突(如果我有另一个 Id 为 Orange 的元素,或者您的 Json 有一个名为 body 的字段 - 要么会中断。)。考虑在 id 前添加一个常量字符串
  • 好吧,@basic,请参阅更新我的问题。在表格中列出复选框,我将得到名称 Apple,Banana,Candy,... 并设置复选框为 true 。但是我在这里缺少的是找到每个 item 的值 1 或 0 。你有想法吗?
  • 查看我的编辑,这应该清楚。请注意,您在问题中使用了错误的表格。需要指定行和列&lt;table&gt;&lt;tr&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
  • 亲爱的@basic,也快点,所以我缺少&lt;tr&gt; &lt;td&gt; ... &lt;/ td&gt; &lt;/ tr&gt;。谢谢提醒。我已经更新了代码。我使用你的答案并得到错误 Uncaught TypeError: Cannot set property 'checked' of null ,因为不是带有 id Group_Product 的复选框,它的值是 G04 。我正在考虑这个。
猜你喜欢
  • 1970-01-01
  • 2015-11-21
  • 2012-10-03
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多