我有一个数据库,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引号与外引号不同。
答案 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());
});