Есть ли альтернатива для реализации функции onClick () в javascript на чистом python?

Короче говоря: я ищу, чтобы получить значение img src onClick() и передать выбранное изображение в функцию python для работы с PIL

сказать, var i = getElementById("image-id").src pass this to python def whatever(): img = src var from js fun

Является ли это возможным? Я знаю, что это можно сделать >>>

def post(self):
    val = self.request.get("name_of_the_txt_field_to_get")
    self.request.write("val") 

но я хочу, чтобы переменная была изображением SRC с помощью onClick(); Кнопка, и я хочу передать это значение SRC в функцию Python в качестве переменной.

Я знаю, что js на стороне клиента и python на стороне сервера, поэтому я пытаюсь передать значение другому URL, скажем, из http://localserver в http://localserver/image

Я нашел решение для этого, и я наткнулся на несколько вариантов: https://github.com/atsepkov/RapydScript (но это компилятор с python to javascript, и мне нужно его скомпилировать)

другой старый добрый http://code.google.com/p/pyv8/ но я не могу понять это

этот, кажется, довольно интересный PICO, и я думаю, что сделал бы работу, однако я не могу понять, как мне запустить его на GAE

рабочая область: GAE для python с шаблоном Jinja2.

2 ответа

Я предполагаю, что вы спрашиваете о Javascript, потому что вы что-то запускаете в веб-браузере. И когда вы запускаете что-то в браузере, я предполагаю, что вы хотите, чтобы все работало в любом браузере.

В этом случае ответ - нет, нет.

Браузеры могут выполнять Javascript. Они не выполняют Python. Поэтому вам нужно будет выполнить Javascript в браузере, сделать какой-то HTTP-запрос к вашему серверу и обработать запрос в python. Существуют такие библиотеки, как pico, которые генерируют обертки, поэтому вы должны писать меньше кода, но в фоновом режиме это тоже самое.

Вы можете написать какой-нибудь плагин для браузеров, которые могут запускать Python. Это было сделано: https://wiki.python.org/moin/WebBrowserProgramming

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

Вы можете использовать JQuery, чтобы сделать AJAX POST для http://localserver/image:

$(document).ready(function() {
    $("img").click(function() {
        var request = $.ajax({
            url: "/image",
            type: "POST",
            data: {imageSrc : $(this).attr("src")}
        });

        request.done(function(msg) {
            alert("Request succeeded: " + msg );
        });

        request.fail(function(jqXHR, textStatus) {
            alert( "Request failed: " + textStatus );
        });
    });
});

Смотрите также: учебник Ajax для публикации и получения

Другие вопросы по тегам