我们有一个在实时环境或测试环境中运行的程序。唯一的区别是测试环境中的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
包含返回值(没有用户交互)?
答案 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脚本正确。
但是,您应该阅读CGI,Ajax以及mod_python如何运作的概念。