想象一下,您需要编写一些 Javascript,以便在更改下拉列表时简单地更改一组复选框。
根据在列表中选择的项目,一些复选框将变为选中/未选中。
在后面,您有 Python 代码和一些 SQLAlchemy。
Javascript 需要像往常一样识别列表中的选定项,将其发送回 Python 模块,然后 Python 模块将使用某些 SQLAlchemy 中的变量返回需要选中的复选框列表,即“用户选择了‘Ford’ ',因此需要选中复选框'Focus'、'Mondeo'、'Fiesta'"
我遇到的问题是,我似乎无法找到一种方法来从 Javascript 访问 python 模块,而无需将 div 转换为迷你浏览器页面并将包含变量的 url 传递给它!
有人知道这应该如何运作吗?
最佳答案
有趣的是,我有一些带有 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 传递。
关于javascript - 在 Python 和 Javascript 之间传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689695/