2016-06-20 46 views
0

我想通過AJAX調用在我的地圖上獲取一些數據。但我收到以下錯誤:SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data。我做了console.log(dataArray)。問題是我之前在我的應用程序中實現的兩個數據集確實工作並出現在屏幕上,但是當我試圖實現第三個數據集時,出現此錯誤,並且變量dataArray保持空白。如何解決以下錯誤:JSON.parse:JSON數據第1行第1列的數據意外結束?

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) 
+0

請確保數組的每個元素都是有效的JSON:'console.log(JSON.parse(d [fieldList.length]))' –

+0

您能向我們展示您的AJAX調用。在不知道數據和fieldList是什麼樣的情況下,我們無法幫到你。 –

+0

更新了代碼@Tomasz Nguyen。但奇怪的是,其他兩個數據集的工作,最後一個不是。 (不工作的數據集相當大,但對POST方法應該沒有問題) –

回答

1

確保你的PHP腳本輸出JSON和只有 JSON。現在你正在做的:

echo $attr.", ";

及更高版本:

echo json_encode($attribute_names);

所以,你的輸出既包含一些逗號分隔的文字:

2, 1, 0, 0, 0, , 0, 0, [snip], 0, 1840, 0, 2,

後來,一些有效的GeoJSON:

{"type":"MultiPolygon","coordinates":[[[[6.74578464881977, [snip] ,53.3291017450563]]]]}

回報(echo只有GeoJSON的,只有一次,不運行任何其他echo秒,你會被罰款。

+0

這不是數據錯誤。 JSON響應時間很長。所以Post Ajax請求不會發回整個JSON。現在我需要弄清楚如何增加Xampp中的JSON長度,我認爲。 –

1

好的。問題是您的腳本輸出是JSON和非JSON數據的混合。當你用JavaScript分割你的腳本的輸出時,JSON也被分成幾部分。因此,您的陣列d不再包含有效的JSON。

通常,我們會返回純JSON。在你的情況下,這很難,因爲表中的數據包含JSON。

你可以去兩種方式:

  1. 當你從表中檢索數據,解碼JSON,創建從解碼的數據對象的數組,對象全陣列式編碼回JSON和返回它
  2. 或者不要使用逗號和分號分隔數據,但使用其他一些獨特的字符或字符串,如'|'或'JYZ'在JSON中沒有意義,並且不是數據庫中的值。
相關問題