Javascript 如何修复以下错误:JSON.parse:JSON数据第1行第1列的数据意外结束?
我试图通过AJAX调用在地图上获取一些数据。但是我得到了以下错误:Javascript 如何修复以下错误:JSON.parse:JSON数据第1行第1列的数据意外结束?,javascript,json,leaflet,Javascript,Json,Leaflet,我试图通过AJAX调用在地图上获取一些数据。但是我得到了以下错误:SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外的数据结尾。我做了console.log(dataArray)。问题是,我以前在应用程序中实现的两个数据集确实工作并出现在屏幕上,但当我尝试实现第三个数据集时,我遇到了这个错误,vardataArray保持为空 geojson_popupInfo = { "type": "FeatureCollection", "features":
SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外的数据结尾。我做了console.log(dataArray)
。问题是,我以前在应用程序中实现的两个数据集确实工作并出现在屏幕上,但当我尝试实现第三个数据集时,我遇到了这个错误,vardataArray
保持为空
geojson_popupInfo = {
"type": "FeatureCollection",
"features": [],
};
geojson_dataTable = {
"type": "FeatureCollection",
"features": [],
};
var dataArray = data.split(", ;");
dataArray.pop();
dataArray.forEach(function(d){
d = d.split(", ");
var feature_popupInfo = {
"type": "Feature",
"properties": {},
"geometry": JSON.parse(d[fieldList.length])
};
var feature_dataTable = {
"type": "Feature",
"properties": {},
"geometry": JSON.parse(d[fieldList.length])
};
for (var i=0; i<fieldList.length; i++){
if ([fieldList[i].show_field] == 't') {
feature_popupInfo.properties[fieldList[i].field_alias] = d[i];
}
feature_dataTable.properties[fieldList[i].field_name] = d[i];
};
geojson_popupInfo.features.push(feature_popupInfo);
geojson_dataTable.features.push(feature_dataTable);
});
console.log(dataArray)
geojson\u popupInfo={
“类型”:“FeatureCollection”,
“功能”:[],
};
geojson_数据表={
“类型”:“FeatureCollection”,
“功能”:[],
};
var dataArray=data.split(“,;”);
dataArray.pop();
dataArray.forEach(函数(d){
d=d.拆分(“,”);
变量功能\u popupInfo={
“类型”:“功能”,
“属性”:{},
“geometry”:JSON.parse(d[fieldList.length])
};
变量特征_数据表={
“类型”:“功能”,
“属性”:{},
“geometry”:JSON.parse(d[fieldList.length])
};
对于(var i=0;i确保您的PHP脚本只输出JSON和JSON
echo$attr.,;
后来:
echo json\u encode($attribute\u names);
因此,您的输出包含一些逗号分隔的文本:
2,1,0,0,0,0,0,0[snip],0,1840,0,2,
后来,一些有效的GeoJSON:
{“类型”:“多多边形”,“坐标”:[[[[6.74578464881977[snip],53.3291017450563]]]}
返回(echo
)只返回GeoJSON,并且只返回一次,不要运行任何其他的echo
,您会没事的。确保您的PHP脚本输出JSON和只输出JSON。现在您正在执行:
echo$attr.,;
后来:
echo json\u encode($attribute\u names);
因此,您的输出包含一些逗号分隔的文本:
2,1,0,0,0,0,0,0[snip],0,1840,0,2,
后来,一些有效的GeoJSON:
{“类型”:“多多边形”,“坐标”:[[[[6.74578464881977[snip],53.3291017450563]]]}
返回(echo
)只运行GeoJSON,并且只运行一次,不要运行任何其他的echo
s,你会没事的。好的。问题是你的脚本输出是JSON和非JSON数据的混合。当你用JavaScript分割脚本的输出时,JSON也被分块。因此,你的数组d
不包含n不再是有效的JSON
通常,我们会返回纯JSON。在您的情况下,这很难,因为表中的数据包含JSON
你可以走两条路:
从表中检索数据时,解码JSON,从解码的数据创建对象数组,将整个对象数组编码回JSON,然后返回
或者不要使用逗号和分号来分隔数据,而是使用一些其他独特的字符或字符串,如“|”或“XYZ”,它们在JSON中没有任何意义,在数据库中也不是值
好的。问题是您的脚本输出是JSON和非JSON数据的混合。当您用JavaScript分割脚本输出时,JSON也被分块。因此,您的数组d
不再包含有效的JSON
通常,我们会返回纯JSON。在您的情况下,这很难,因为表中的数据包含JSON
你可以走两条路:
从表中检索数据时,解码JSON,从解码的数据创建对象数组,将整个对象数组编码回JSON,然后返回
或者不要使用逗号和分号来分隔数据,而是使用一些其他独特的字符或字符串,如“|”或“XYZ”,它们在JSON中没有任何意义,在数据库中也不是值
确保数组的每个元素都是有效的JSON:console.log(JSON.parse(d[fieldList.length])
你能给我们看看你的AJAX调用吗。不知道数据和字段列表是什么样子的,我们帮不了你。更新了代码@Tomasz-Nguyen。但奇怪的是,另外两个数据集工作,最后一个不工作。(不工作的数据集相当大,但POST方法应该没有问题)@L.fcg代码中继从ajax响应中获得的数据-这是什么数据?提供JSON(错误表示JSON字符串无效)“第1行第1列的数据意外结束”表示没有数据。您是否确认ajax调用返回了任何内容?(如果console.log(data)
在getData
的成功处理程序中,您会得到什么?)确保数组的每个元素都是有效的JSON:console.log(JSON.parse(d[fieldList.length]))
你能给我们看看你的AJAX调用吗?不知道数据和字段列表是什么样子,我们帮不了你。更新了代码@Tomasz Nguyen。但奇怪的是,其他两个数据集工作,最后一个不工作。(不工作的数据集相当大,但POST方法应该没有问题)@L.fcg代码中继从ajax响应中获得的数据-这是什么数据?提供JSON(错误意味着JSON字符串无效)“第1行第1列的数据意外结束”意味着没有数据。您确认ajax调用返回了什么吗?(如果console.log(data),您会得到什么
内部getData
的成功处理程序?)不是数据错了。JSON响应太长了。所以Post Ajax请求没有发回整个JSON。现在我需要弄清楚如何在Xampp中增加JSON长度。我认为不是数据错了。JSON响应太长了。所以Post Ajax请求没有发回整个JSON。现在我需要弄清楚是什么我想在Xampp中增加JSON的长度。