【问题标题】:Passing variables between Python and Javascript在 Python 和 Javascript 之间传递变量
【发布时间】:2011-12-03 03:10:52
【问题描述】:

想象一下,当下拉列表发生变化时,您需要编写一些 Javascript 来简单地更改一组复选框。

根据在列表中选择的项目,某些复选框将被选中/取消选中。

在后面,你有 Python 代码和一些 SQLAlchemy。

Javascript 需要像往常一样识别列表中的选定项目,将其发送回 Python 模块,然后 Python 模块将使用某些 SQLAlchemy 中的变量返回需要检查的复选框列表,即“用户选择的福特',因此需要选中复选框'Focus'、'Mondeo'、'Fiesta'"

我遇到的问题是,如果不将 div 转换为迷你浏览器页面并将包含变量的 url 传递给它,我似乎无法找到一种从 Javascript 访问 python 模块的方法!

有人对这应该如何工作有任何想法吗?

【问题讨论】:

    标签: javascript python variables sqlalchemy


    【解决方案1】:

    有趣的是,我有一些带有 JavaScript 的网页与使用 SQLAlchemy 的 Python CGI 模块对话。

    我所做的是发送 AJAX 请求,但在正文中使用 JSON 请求而不是 XML。 Python CGI 模块使用标准的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)
    

    注意,它不使用 Python cgi 模块,因为整个请求在正文中作为 JSON 传递。

    【讨论】:

      【解决方案2】:

      python 有一个json 模块,非常适合这种场景。

      使用一个很好的旧 AJAX,以 json 作为数据格式将允许您在 javascript 和您的 python 模块之间交换数据。

      (除非您的 python 模块在客户端运行,但我看不出您如何从浏览器执行它...)

      【讨论】:

        猜你喜欢
        • 2013-07-23
        • 2016-09-05
        • 2013-04-09
        • 2013-03-07
        • 1970-01-01
        • 2019-04-26
        • 1970-01-01
        相关资源
        最近更新 更多