【问题标题】:How can I display without double quote json array data in jquery如何在 jquery 中显示没有双引号 json 数组数据
【发布时间】:2017-10-20 23:38:01
【问题描述】:

我从我的 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 我可以正确显示数据。即使你可以看到我附加了多行,用逗号分隔。 我的问题是如何显示这个输出结果? 请帮忙。谢谢

【问题讨论】:

  • 需要替换双引号的原因是什么?据我所知,当您这样做时,您不会返回有效的 JSON 响应
  • 我只是想做,用url参数传递这个值,服务器端不属于那个值。因为用双引号我无法匹配语法。
  • 语法是什么?

标签: javascript jquery mysql json ajax


【解决方案1】:

我从我的 json_encode 结果中替换了双引号 ""。

这不是明智之举。

您基本上是在破坏任何有用的序列化格式的意义。引号是必需的。你还能如何可靠地将数据从结构中分离出来?您将如何区分字符串中的逗号和作为控制字符的逗号,告诉您下一个字段何时开始?这不像进行字符串替换那么简单。如果您想发明自己的格式...我想您可以这样做...但是您必须考虑到这些事情。

您应该坚持使用已经存在且经过良好测试的格式。 JSON 是一种广泛兼容的格式,这就是它被大量使用的原因。如果出于某种原因您需要更紧凑的东西,请考虑 CBOR 或类似的东西。

如何在jquery中显示不带双引号的json数组数据

如果你想显示不同的东西,你不会像现在这样破坏你的数据服务器端......你只需重新格式化它以供以后显示。

在您的 JavaScript 客户端中删除这些引号是可以接受的。在服务器端执行此操作是一个完全可怕的想法,您仍然需要将有用的结构化数据发送给客户端。

【讨论】:

  • 感谢您的想法。我只是想做,用 url 参数传递这个值,而服务器端不属于那个值。因为用双引号我无法匹配语法。
  • @Roketvai 什么?您的评论对我来说毫无意义...您可以添加更多详细信息并再试一次吗? JSON 可以包含任何有效的字符串,包括带有参数的 URL。
【解决方案2】:

有效的 JSON 格式要求键是双引号中的字符串。当您执行 str_replace 并删除双引号时,您的 JSON 变得无效并且浏览器无法解析它

如果您想将cnumber 从字符串转换为整数,那么您应该在之前$data 传递给json_encode

【讨论】:

    【解决方案3】:

    试试

    $json_string = json_encode($data);
    echo $json_string
    

    然后在success回调中,

    $('#num').append(data.map(function(d) {
      return d.cnumber;
    }).join(','));
    

    正如 Brad 指出的,不要替换服务器端的双引号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 2018-05-09
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 2014-01-04
      相关资源
      最近更新 更多