JSON解析错误:JSON数据的第1行第1列的数据意外结束

时间:2015-03-27 00:16:30

标签: javascript jquery json

我有一个数据库,analy.php和index.php网页。 analysis.php从数据库中获取数据,按所需模式对其进行排序,然后将json_encode($array);回显为带有“数据”的div。我试图获取JSON数据并在index.php页面中解析它。

但是我收到了一个错误。 SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

每次用户从选择框中选择一个选项时,我都会尝试获取此数据。

我的jQuery代码是:

$(document.body).on('change', '.select' , function () {
    var identification = $(this).val();
    var JSONText = $(this).closest('div[id|="module"]').find('p[id="JSON"]');
    JSONText.load('analysis.php?data=' + identification + ' #data');
    console.log("JSON Imported: '" + identification + "'");
    var obj = jQuery.parseJSON(JSONText.text());
    console.log(JSONText.text());
});

编辑:正如您所看到的,我有代码段console.log(JSON.text());。我得到的JSON输出是正确的。我认为唯一的问题是引号都是"而不是JSON引号与外引号不同。

2 个答案:

答案 0 :(得分:6)

jQuery.load是异步的,您尝试在实际加载之前解析JSON。使用jQuery.getJSON加载内容,进行解析并提供可绑定的回调。

jQuery.load将内容加载为HTML并设置所选元素的innerHTML,您可以在此处绑定complete处理程序,但是您可能会遇到问题,将内容加载为HTML然后使用text要从DOM中检索它,因为JSON的某些部分可能会被解释为HTML元素。

更好地利用这个:

$(document.body).on('change', '.select' , function () {
    var identification = $(this).val();
    $.getJSON(
        'analysis.php?data=' + identification + ' #data',
        function (data) {
           console.log(data);
        }
    );
});

答案 1 :(得分:2)

除了LJ_1102的解决方案之外,还有一种修复当前代码段的方法:

JSONText.load('analysis.php?data=' + identification + ' #data', function() {

    console.log("JSON Imported: '" + identification + "'");
    var obj = jQuery.parseJSON(JSONText.text());
    console.log(JSONText.text());

});