如何在Python中获取此JavaScript函数的返回值?

时间:2012-08-14 09:50:14

标签: javascript python html

我们有一个在实时环境或测试环境中运行的程序。唯一的区别是测试环境中的URL包含“/ test /”。在测试环境中,某些功能会导致它切换到实时环境(当URL被硬编码时!),所以我正在尝试修复它。

我在JavaScript中创建了这个函数:

function GetTestMode()
{
    // If "/test/" exists in URL, keep it there (we are in test mode).
    var currentURL = document.URL;
    var sTestMode = "";
    if (currentURL.indexOf("/test/") != -1)
    {
    // test mode (according to URL)
      sTestMode = "test/";
    }
    return sTestMode;
}

JavaScript函数使用它并按预期工作。

但是,大多数UI代码都是Python(创建HTML)。所以我想在Python中获得这个JavaScript结果。到目前为止,我有:

import cgi
import os
import sys
import re

def DrawUI (self, short=False):
    print '<br />'
    print '<div class="box2">'
    print '<table cellspacing=0 cellpadding=0 border="0">'
    print '<tr>'

    sTestMode = "test mode = %s" % ('<a href="javascript:GetTestMode()" >')
    print 'sTestMode = ' + sTestMode + '<br />'

这会导致此代码后面的print语句(甚至可能是print 'hello world')成为一个链接,如果我单击它,则会在浏览器中显示JavaScript函数的正确返回值。

如何让sTestMode包含返回值(没有用户交互)?

1 个答案:

答案 0 :(得分:1)

我假设您使用的是mod_python

这是一个如何将Javascript变量提供给服务器的黑客示例。

在Python中,使用cgi module

form = cgi.FieldStorage()
sTestMode = form.getfirst('sTestMode')
sTestMode = cgi.escape(sTestMode)  # Avoid script injection escaping the user input

在JavaScript中,使用JQuery(不确定这是否正确,也许一些JQuery专家可以解决这个问题):

var filename = '/url/to/your/script';
$.ajax({
  url: filename + '?sTestMode=' + sTestMode,
  type: 'GET'
});

如果您在实施Javascript版本时遇到问题,可以通过在浏览器中调用/url/to/your/script?sTestMode=something_funny来确保您的Python脚本正确。

但是,您应该阅读CGIAjax以及mod_python如何运作的概念。