Подтвердить что ты не робот

Передача переменных между Python и Javascript

Представьте, что вам нужно написать Javascript, который просто меняет набор флажков при изменении выпадающего списка.

В зависимости от того, какой элемент выбран в списке, некоторые флажки будут отмечены/не отмечены.

В обратном, у вас есть код Python вместе с некоторыми SQLAlchemy.

Javascript должен идентифицировать выбранный элемент в списке как обычно, отправить его обратно в модуль Python, который затем будет использовать переменную в некоторой SQLAlchemy, чтобы вернуть список флажков, которые необходимо проверить, т.е. "Пользователь выбрал" Ford ', поэтому необходимо отметить флажки "Фокус", "Мондео", "Фиеста".

Проблема с Im заключается в том, что я не могу найти способ доступа к модулям python из Javascript, не превращая div в мини-страницу браузера и передавая в нее URL-адрес, содержащий переменные!

Есть ли у кого-нибудь идеи о том, как это должно работать?

4b9b3361

Ответ 1

Смешно, у меня есть веб-страницы с JavaScript, которые говорят с модулями CGI Python, которые используют SQLAlchemy.

То, что я делаю, - это отправить запрос AJAX, но с запросом JSON в теле вместо XML. Модули CGI Python используют стандартный json модуль для десериализации JSON в словаре.

Сторона JavaScript выглядит следующим образом:

function on_request_success(response) {
    console.debug('response', response);
} 

function on_request_error(r, text_status, error_thrown) {
    console.debug('error', text_status + ", " + error_thrown + ":\n" + r.responseText);
}

var request = { ... };
jQuery.ajax({
    url: 'http://host/whatever.cgi',
    type: 'POST',
    cache: false,
    data: JSON.stringify(request),
    contentType: 'application/json',
    processData: false,
    success: on_request_success,
    error: on_request_error
});

И Python вот так:

request = json.load(sys.stdin)
response = handle_request(request)
print("Content-Type: application/json", end="\n\n")
json.dump(response, sys.stdout, indent=2)

Обратите внимание, что он не использует модуль cgi Python, так как весь запрос передается как JSON в теле.

Ответ 2

python имеет модуль json, который идеально подходит для этого сценария.

используя старый добрый AJAX, с json, поскольку формат данных позволит вам обмениваться данными между javascript и вашим модулем python.

(если ваш python-модуль не запущен на стороне клиента, но затем я не вижу, как вы могли его выполнить из браузера...)