私は、シンプルなWSGIサーバを実行しているWSGI ... Ajax呼び出し
from run import app
if __name__ == "__main__":
app.run(threaded=True, debug=True)
そして、私はGETリクエストでサーバーを打っていますよ、サーバは200を返します。メッセージを返しますが、データは返されません。私は壊れたパイプエラーラウンドを取得する必要ねじ切りオプションを使用していくつかの場所で読んだが、私の場合に役立つように見えていない
Error on request:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 209, in run_wsgi
execute(self.server.app)
File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 200, in execute
write(data)
File "/Library/Python/2.7/site-packages/werkzeug/serving.py", line 175, in write
self.send_header('Server', self.version_string())
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/BaseHTTPServer.py", line 401, in send_header
self.wfile.write("%s: %s\r\n" % (keyword, value))
IOError: [Errno 32] Broken pipe
次のエラーメッセージを取得します。誰にもアイデアはありますか?
フラスコのバージョンは0.12.2です。
!!! EDIT !!!
私が開発しているページのポイントは、リーフレットマップからユーザー定義座標を取得し、データベース(この場合はneo4j)を呼び出します。 APIはすべて郵便配達員でうまくいくので、クエリは正常に動作します。だから、問題は私のWebアプリケーションのどこかにあるはずです。ここに私のウェブページのための私のサーバーアプリです。多分Ajaxコールで?ここで
from flask import Flask, render_template
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route('/demo')
def webMap():
return render_template('demo3.html')
if __name__ == '__main__':
app.config['DEBUG'] = True
app.run(host='localhost', port=8090)
はJSは次のとおりです。
var map = L.map('map1').setView([51.506725, -0.076486], 12);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
maxZoom: 18,
id: 'mapbox.streets',
accessToken: '*************************'
}).addTo(map);
//add start marker to map and delete old marker
var startmarker = null;
map.on('click', function (e) {
if (startmarker !== null) {
map.removeLayer(startmarker);
}
startmarker = L.marker(e.latlng, {
title: "Start Point",
}).addTo(map);
startcoords = e.latlng.lng.toString() + "&" + e.latlng.lat.toString();
startmarker.bindPopup("Start " + startcoords);
});
//add end marker to map and delete old marker
var endmarker = null;
map.on('contextmenu', function (e) {
if (endmarker !== null) {
map.removeLayer(endmarker);
}
endmarker = L.marker(e.latlng, {
title: "End Point",
}).addTo(map);
endcoords = e.latlng.lng.toString() + "&" + e.latlng.lat.toString();
endmarker.bindPopup("End " + endcoords);
coords = startcoords+"&"+endcoords;
});
// choose query type, click button & Ajax call to API server
$("#button").click(function() {
var val = $('input[name=query]:checked').val()
if (val == 'route') {
stuff = $.ajax({
url: "http://127.0.0.1:5000/route&"+coords,
type: "GET",
dataType: "json" ,
})
.done(function(json) {
alert(JSON.stringify(stuff)); // trying to JSON back will work out how to display it after I get some data returned
})
.fail(function(xhr, status, errorThrown) {
alert("Sorry, there was a problem!");
console.log("Error: " + errorThrown);
console.log("Status: " + status);
console.dir(xhr);
})
.always(function(xhr, status) {
alert("The request is complete!");
});
ありがとうございましたNicolaさん、ありがとうございました。郵便配達員経由で送信された場合でも同じクエリが動作しますが、どちらかの問題はAjax呼び出し私は作成中です?上記で詳細を編集します – SAB