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

我有一个数据库,analy.php和index.php网页。 analysis.php从数据库中获取数据,按所需模式对其进行排序,然后回显json_encode($array); 进入id为’data’的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引号与外引号不同。

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); } ); }); 

除了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()); });