我有一個應用程序,我使用的是燒瓶,python,ajax,json,javascript和傳單。這個應用程序讀取一個csv文件,將其放入json格式,然後將其返回給ajax調用。我的問題是,geojson沒有被返回。在控制檯中,我在控制檯日誌中收到5000 NetworkError。最終結果是在傳單地圖圖層中使用返回geojson。如果我刪除jsonify,返回工作正常,但它是一串當然,這不會爲圖層工作。如你所見,我在ajax成功部分有一個簡單的警告(「成功」)。這沒有被執行。警報(數據)也不是。 我在Flask import語句中有jsonify。 謝謝你的幫助Jsonify數據不會返回到Ajax調用
Ajax調用
$.ajax({
type : "POST",
url : '/process',
data: {
chks: chks
}
})
.success(function(data){
alert("success"); // I am doing this just to get see if I get back here. I do not
alert(data);
蟒蛇/瓶
@app.route('/process', methods=['POST'])
def process():
data = request.form['chks']
rawData = csv.reader(open('static/csvfile.csv', 'r'), dialect='excel')
count = sum(1 for row in open('static/csvfile.csv))
template =\
''' \
{"type" : "Feature",
"geometry" : {
"type" : "Point",
"coordinates" : [%s, %s]},
"properties" : {"name" : "%s" }
}%s
'''
output = \
''' \
{"type" : "Feature Collection",
"features" : [
'''
iter = 0
separator = ","
lastrow = ""
for row in rawData:
iter += 1 // this is used to skip the first line of the csv file
if iter >=2:
id = row[0]
lat = row[1]
long = row[2]
if iter != count:
output += template % (row[2], row[1], row[0], separator)
else:
output += template % (row[2], row[1], row[0], lastrow)
output += \
''' \
]}
'''
return jsonify(output)
更多信息 - 以大衛Knipe的信息進手,如果我從我的return語句刪除jsonify,它回報我所期望的,並且我可以在警報中輸出回報。它看起來像這樣
{ "type" : "Feature Collection",
"features" : [
{"type" : "Feature",
"geometry" : {
"type" : "Point",
"coordinates" : [ -86.28, 32.36]},
"properties" : {"name" : "Montgomery"}
},
{ "type" : "Feature",
"geometry" : {
"type" : "Point",
"coordinates" : [ -105.42, 40.30]},
"properties" : {"name" : "Boulder"}
},
]}
如果我採取這一數據,並將其硬編碼到阿賈克斯成功,然後將它傳遞給這樣的瓣葉層的代碼 - 它會工作,我的積分將在我的地圖
顯示...
.success(function(data){
var pointsHC= { "type" : "Feature Collection",
"features" : [
{"type" : "Feature",
"geometry" : {
"type" : "Point",
"coordinates" : [ -86.28, 32.36]},
"properties" : {"name" : "Montgomery"}
},
{ "type" : "Feature",
"geometry" : {
"type" : "Point",
"coordinates" : [ -105.42, 40.30]},
"properties" : {"name" : "Boulder"}
},
]};
// leaflet part
var layer = L.geoJson(pointsHC, {
pointToLayer: function(feature, latlng){
return L.circleMarker(...
如果我沒有硬編碼並通過變量傳遞數據,它不起作用,我得到和無效的geoJson對象。我有兩個最後的分號刪除,不刪除試了一下,沒有愛情無論哪種方式
...
.success(function(data){
// leaflet part
var layer = L.geoJson(data, {
pointToLayer: function(feature, latlng){
return L.circleMarker(...
是'request.form ['chks']'正確填充 – Busturdust
@Busturdust - 是的。如果我更改代碼來返回chks,我就能得到我所期望的。另外,如果我刪除jsonify並返回(輸出),我可以得到我所期望的,但是作爲一個字符串。 –
我修復了上面代碼中的一些拼寫錯誤。我希望我能把他們全部帶走。由於安全問題,我無法複製過去我的代碼。這就是錯別字在那裏的原因。 –