jquery json解析 - 和错误

时间:2013-09-17 17:44:01

标签: jquery json parsing

我有php脚本从DB返回数据并创建一个json样式的文本,如下所示:

{ "company" : [ { "value" : "siemens" }, { "value" : "cocacola" } ], "order" : [ { "value" : "John" }, { "value" : "Mary" } ], "mob" : [ { "value" : "123123123" },  { "value" : "123123123" } ] }

我通过jquery解析它:

    $.ajax({
        type: "POST",
        url: dir + "get_data.php", // this on gets text you can se above
        success: function(html){
            try {
                var autocomplete = $.parseJSON(html);
            }
            catch(e) {
                alert('invalid json');
                $('#content').append(html)
            }
                    }
                   })

虽然一段时间它返回“无效的json”,尽管数据库结构或代码中没有任何内容未被更改。早些时候它工作得很好 - 只是完美!改变的一切只是来自用户的新条目,因为数据是自动填充字段。我的第一个想法是用户输入了一些没有正确过滤的特殊标志,即引号或大括号。我通过http://json-validator.com/http://jsonlint.com/检查了它们 - 它们都说它是正确的json。接下来的想法是,以某种方式json文件是大的解析,它解析它的一部分。你有什么想法吗?

解决方案:

有些用户输入了数据库制表符号,这些符号正在弄乱json解析。如果你有类似的问题 - 先从中清除数据库并设置某种过滤器来输入数据。祝好运。闭!

1 个答案:

答案 0 :(得分:0)

你可以在这里做几件事:

  1. 确保您使用的是最新版本的jQuery。

  2. 使用jQuery的AJAX函数指定数据类型有助于查明错误。请尝试以下代码:

    $.ajax({url: dir + "get_data.php", type: "json"})
        .done(function(data) {
            var autocomplete = data;
        })
        .fail(function(xhr, response, error) {
            alert('Request failed: ' + error);
            console.log('%o', xhr);
            $('#content').append(response);
        });
    

    在控制台中记录的jqXHR对象和从error抛出的$.ajax之间,您可能能够获得有关解析JSON出错的原因的更具体信息。

  3. 最后,请检查the documentation for jQuery.parseJSON()并确保新行和标签字符的问题都不适用于您。