Javascript 如何修复以下错误:JSON.parse:JSON数据第1行第1列的数据意外结束?

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":

我试图通过AJAX调用在地图上获取一些数据。但是我得到了以下错误:
SyntaxError:JSON.parse:JSON数据的第1行第1列出现意外的数据结尾。我做了
console.log(dataArray)
。问题是,我以前在应用程序中实现的两个数据集确实工作并出现在屏幕上,但当我尝试实现第三个数据集时,我遇到了这个错误,var
dataArray
保持为空

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的长度。