Передача переменной JavaScript в Python - PullRequest
7 голосов
/ 24 мая 2010

Например:

#!/usr/bin/python
print "This is python."

print "<script type="text/javascript">
          var pass_to_python = new Number(7)
       </script>"

the_number = pass_to_python???

Как мне получить pass_to_python в python?

Ответы [ 4 ]

5 голосов
/ 24 мая 2010

С помощью pyv8 вы можете выполнять javascript из Python.

import PyV8

class Global(PyV8.JSClass):
    pass

with PyV8.JSContext(Global()) as ctxt:
    the_number = ctxt.eval("var pass_to_python = new Number(7)")

см. http://code.google.com/p/pyv8/

3 голосов
/ 24 мая 2010

Вы можете GET или POST к скрипту Python. Если вам нужно сделать это динамически, вы можете использовать AJAX.

Вот хорошая ссылка: Как обрабатываются переменные POST и GET в Python?

1 голос
/ 30 апреля 2018

Я использую колбу и AJAX для передачи значений из JavaScript в Python

function pass_values() {
   var pass_to_python = new Number(7)

                $.ajax(
                {
                    type:'POST',
                    contentType:'application/json;charset-utf-08',
                    dataType:'json',
                    url:'http://127.0.0.1:5000/pass_val?value='+pass_to_python ,
                    success:function (data) {
                        var reply=data.reply;
                        if (reply=="success")
                        {
                            return;
                        }
                        else
                            {
                            alert("some error ocured in session agent")
                            }

                    }
                }
            );
}

питон:

@app.route('/pass_val',methods=['POST'])
def pass_val():
    name=request.args.get('value')
    print('name',name)
    return jsonify({'reply':'success'})
0 голосов
/ 24 мая 2010

HTTP - это простой протокол запроса-ответа, он не позволяет останавливать промежуточный поток и ждать получения дополнительной информации от клиента - и поскольку ваш JS работает в браузере (JS может работать на сервере, но большинство людей Я не буду пытаться делать это, если им не нужен код для запуска в браузере, поэтому я предполагаю, что использование JS на стороне сервера не может быть и речи), а Python работает на сервере, это то, что вам нужно для ваш код для работы (а также исправление вложенности неработающей кавычки в коде Python).

Вам необходимо загрузить весь документ, а затем отправить новый HTTP-запрос.

Для этого может потребоваться установить JS location.href (, чтобы убедиться, что у вас есть запасной вариант для клиентов, не являющихся JS ), может потребоваться использование XMLHttpRequest для асинхронной загрузки новых данных, лучше использовать другой техника (трудно сказать наверняка, поскольку ваш пример слишком сильно упрощает , чтобы сказать, что такое X )

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