我从我的json_encode结果中替换双引号“”。
$json_string = json_encode($data);
$json_string = str_replace('"','',$json_string);
echo $json_string;
我使用for循环获取数据。像这样的代码:
$("#gnumbers").change(function() {
var id = $(this).find(":selected").val();
var dataString = 'grpid='+ id;
$.ajax({
url: 'getGroupNumbers.php',
dataType: "json",
data: dataString,
cache: false,
success: function (data) {
var i, l;
for (i = 0, l = data.length; i < l; i++) {
$("#num").append(data[i].cnumber + ",");
//console.log(data[i].cnumber);
}
}
});
});
我检查了console.log只返回网络结果,如下所示: [{cnumber:8801752992444,group_id:3},{cnumber:8801795978968,8801936761915,group_id:3}]
如果没有str_replace,我可以正确显示数据。即使你可以看到我用逗号分隔多个行。 我的问题是如何显示此输出结果? 请帮忙。感谢
答案 0 :(得分:2)
我替换双引号&#34;&#34;来自我的json_encode结果。
这不是一件明智的事。
你基本上破坏了任何有用的序列化格式。报价是必需的。您如何可靠地将数据与结构分开?如何区分字符串中的逗号和逗号作为控制字符,告诉您下一个字段何时开始?这不像做字符串替换那么简单。如果你想发明自己的格式......我想你可以这样做......但你必须考虑这些事情。
您应该坚持已经存在且经过充分测试的格式。 JSON是一种广泛兼容的格式,这就是它如此频繁使用的原因。如果由于某种原因你需要更紧凑的东西,可以考虑CBOR或类似的东西。
如何在jquery
中没有双引号json数组数据的情况下显示
如果你想以不同的方式显示,你就不会像现在这样在你的数据服务器端破坏......你只需要重新格式化它稍后显示。
在JavaScript中删除客户端的引号是可以接受的。在服务器端执行它是一个非常可怕的想法,您仍然需要向客户端提供有用的结构化数据。
答案 1 :(得分:1)
有效的JSON格式要求键是双引号中的字符串。当你执行str_replace并删除双引号时,JSON变为无效,浏览器无法解析它
如果您想将$data
从字符串转换为int,那么您应该之前将json_encode
传递给{{1}}
答案 2 :(得分:0)
尝试
$json_string = json_encode($data);
echo $json_string
然后在success
回调中,
$('#num').append(data.map(function(d) {
return d.cnumber;
}).join(','));
正如布拉德指出的那样,不要替换服务器端的双引号。