pos
aka clientPosition
- не простое значение, это объект с широтой и длинными свойствами.Вы не сможете заклинить его до конца своего URL таким образом.Вам нужно будет либо принять JSON-представление объекта в вашем скрипте Python, либо попросить ajax отправить два числовых значения (lat и long) и получить их соответствующим образом.
Вы не вызываете pass_values - Итак, гдеВы бы хотели это назвать?Самое важное для меня место - функция успеха геолокации.Вы также можете передать значения lat / long в качестве параметра в pass_values и избегать использования глобальной переменной.
Поскольку вы используете POST, вы также можете POST данные.В настоящее время вы используете post и добавляете данные в строку URL (метод, используемый с запросами GET).Это противоречит цели использования POST.
Итак:
// some setting for google maps
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position){
pass_values(position.coords.latitude, position.coords.longitude);
});
// some exception handling
}
function pass_values(lat, long)
{
$.ajax
(
{
type:'POST',
contentType:'application/json;charset-utf-08',
dataType:'json',
url:'http://127.0.0.1:5000/getPosition',
data: {
lat: lat,
long: long
},
success:function (data) {
var reply=data.reply;
if (reply=="success") {return;}
else {alert("some error ocured in session agent")}
}
}
);
}
Так вот, я на самом деле не делаю python, так что эта часть является своего рода догадкой - она должна принять сообщение json иполучить два значения, хранящиеся внутри.
@app.route('/getPosition',methods=['POST'])
def getPosition():
data=request.get_json()
lat = data.get('lat', '')
long = data.get('long', '')
return jsonify({'reply':'success'})