Почему я получаю сообщение об ошибке при передаче данных JSON из Google Map API? - PullRequest
0 голосов
/ 26 сентября 2018
def map():
if request.method == 'POST':
    key = "googleMapAPIkey"
    orilist = request.form['from'].split()
    deslist = request.form['to'].split()
    mode = request.form.get('traffic_mode')
    ori = ""
    des = ""
    for word in orilist:
        ori = ori + word + "+"
    ori = ori[:-1]
    for word in deslist:
        des = des + word + "+"
    des=des[:-1]
    url = "https://maps.googleapis.com/maps/api/directions/json?origin="+ori+\
          "&destination="+des+"&key="+key
    print ori,des,mode,url
    r = requests.get(url)
    direction1 = r.json()

    markerArray = []
    print json.dumps(direction1)
    return render_template('googlemap.html', direction1=json.dumps(direction1), ori=request.form['from'], des=request.form['to'], mode=mode,method='POST')
else:
    print request.method
    return render_template('index.html',method='GET')

Вот шаблон скрипта

var routes = {{ directions1|tojson }};
var start_point = {{ ori }};
var end_point = {{ des }};
var mode = {{ mode }};
function initMap() {
    var map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: 42.880230, lng: -78.878738},
        zoom: 8
    });
    var renderer = new google.maps.DirectionsRenderer();

    var request = {
    travelMode: mode,
    origin: start_point,
    destination: end_point
    };
    renderDirections(map,routes,request)
}

Я использовал API Google, чтобы получить ответ, и я попытался передать это значение на стороне клиента.Я уверен, что получаю строку в формате JSON, и когда я пытаюсь открыть Интернет, появляется сообщение «TypeError: Undefined не является сериализуемым JSON»

1 Ответ

0 голосов
/ 26 сентября 2018

Вы пытаетесь получить указания от переменной, которую вы не определили.

Не поступает directions1 из бэкэнда.Попробуйте direction1.(Или переименуйте его в render_template(), чтобы они совпадали).


Рекомендация: копирование / вставка имен переменных.Даже когда вы делаете опечатки, ваш код все равно будет работать.

Также хорошо обратить внимание на сам текст ошибки: "Undefined is ... означает именно то, что вы передали вместо сериализуемого объекта JSON ...не определено .

Первое, что вы делаете, когда видите эту ошибку: переходите к render_template(), дважды щелкните имя переменной, чтобы выбрать ее, и скопируйте / вставьте в js. Даже когда она выглядит"идентично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...