【发布时间】:2017-12-31 21:19:36
【问题描述】:
我有一个数据库、analysis.php 和 index.php 网页。 analysis.php 从数据库中获取数据,按照所需的模式对其进行排序,然后将json_encode($array); 回显到ID 为“数据”的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());
});
编辑: 如您所见,我有 sn-p console.log(JSON.text());。我得到的 JSON 输出是正确的。我认为唯一的问题可能是引号都是 " 而不是 JSON 引号与外部引号不同。
【问题讨论】:
-
你的 json 看起来怎么样?也不要将您的变量命名为
JSON,因为浏览器本机 json 解析器已分配给它。刚看到这个,你在那儿干吗?使用jQuery.getJSON。 -
在控制台中检查
analysis.php的XHR。 JSON 响应一开始可能不完整。 -
JSON 响应似乎有效。我已经在jsonlint.com 上检查了它的有效性。
-
@shadoweye14 在调用
jQuery.load时开始从服务器下载 JSON,但其他代码在此之后立即执行,因此在下载完成之前“异步”。所以你需要使用完整的回调来确保你的数据确实被加载了。 -
不,“加载为 html,插入 dom,使用
text检索是危险的”。我添加了一个示例来阐明正确的用法。
标签: javascript jquery json