2013-03-18 3 views
0

Я делаю инструмент построения данных, используя механизм Google для Google и Google Docs/gdata, и столкнулся с проблемой связи python/js/html.Повторный доступ к переменным python ПОСЛЕ первоначального вызова html get()

Я хочу очень простой макет для веб-страницы - просто серию выпадающих меню, а затем окончательные графики. Моя текущая дилемма включает раскрывающиеся меню.

Всего 4 раскрывающихся меню, и поля каждого из них зависят от предыдущего выбора. Я нашел JS/HTML-код, который имеет всю необходимую логику, но предполагает, что вы предварительно загрузили все поля выбора. Из-за масштаба проекта невозможно загрузить все при запуске, а данные динамические/изменяющиеся, поэтому я не могу просто объявить статические файлы с содержащимися в них данными выбора меню.

В настоящее время у меня есть методы для получения всех вариантов/данных меню, которые мне нужны из документов Google (с использованием gdata). В идеале я хотел бы просто вызвать каждый из них (html selection1 -> python method1, чтобы получить следующий набор выбора -> html selection2 -> python method2, чтобы получить следующий набор выбора -> и т. Д.), Но из того, что я могу собрать, кажется, это (возврат к python, то есть «post», без перезагрузки всей страницы).

Итак, есть ли способ доступа к переменным/методам python в JS-коде google-app-engine ПОСЛЕ первоначального создания шаблона или без «публикации»? Или, более открыто, если кто-нибудь имеет представление/предложения/идеи, я бы это оценил.

Благодаря

ответ

1

два этапа:

  1. Создайте несколько на стороне сервера код для возврата данных в формате JSON - метод де-факто передачи данных в сети.

  2. В коде javascript позвоните на сервер (с шага 1), а затем проанализируйте результат. Используйте результат, чтобы заполнить выпадающий список.

Хорошей новостью является то, что Google уже предоставляет json в качестве альтернативного формата для своих API-интерфейсов gdata. См. this link для руководства по использованию gdata и возврату JSON.

Для второй части почти все библиотеки на стороне клиента javascript (и вы действительно должны использовать их) обеспечивают простой способ запроса данных с помощью ajax. Поскольку это общая задача, на StackOverflow есть много вопросов, в частности, есть this one, в котором приведен пример, показывающий, как заполнить выпадающее меню с помощью jquery и ajax.

Предполагая, что вы можете использовать javascript и копировать любую функциональность, предоставляемую вашим кодом Python, выше будет работать для вас. Если у вас есть определенная логика, которую вы не хотите передавать на клиентскую сторону, тогда ваш код Python должен будет вернуть json (в действительности вы будете действовать как gdata api для вашего кода javascript).

Поскольку вы не подчеркнуть, какие Python рамки вы используете - вот пример использования flask, простой рамки для веб-разработки на языке Python:

from flask import Flask, jsonify 

app = Flask(__name__) 

@app.route('/the-question') 
def the_answer(): 
    return jsonify(answer=42) 

Более подробный пример можно найти в документации по AJAX with jQuery ,

Если вы используете webapp2, Google предоставляет excellent documentation, чтобы сделать то же самое.

+0

эй Бурхан, спасибо за ваш ответ. Просто для ясности, когда вы говорите серверный код, вы имеете в виду что-то независимое от движка Google? Отдельно размещенный сервер? – user2180883

+0

Нет, вы можете использовать движок Google для Google - я имел в виду сервер _any_. Где-то кроме браузера, где хранятся данные, которые вы хотите получить. –

Смежные вопросы