我正在尝试使用 .exe 程序的执行结果填充下拉列表。.exe 将返回由特殊字符分隔的项目串联。这将依次被views.py 中的相应视图捕获,并呈现到.html。在这个 .html 中,有在窗口加载时运行的 javascript 代码,使用特殊字符分割呈现的字符串并(理论上)填充下拉列表。
我的部分代码如下:
c++ 代码(将被编译成 .exe)
while(i<MAX_ITEMS)
std::cout << i << "$" << item[i] << "&";
views.py(在 URL 调用的视图内部)
os.chdir(r'C:/directory')
proc = subprocess.Popen([r'C:/directory/Application.exe'], stdout=subprocess.PIPE)
y = proc.stdout.read()
proc.wait()
return render_to_response('home.html', {'list': y})
最后,包含 javascript 函数的 html 文件
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" charset="utf-8">
window.onload = function Func() {
var lists = document.getElementById('list');
var liststxt = new Array();
liststxt[1] = "{{ list }}";
var items = liststxt[1].split("&");
for (var count = lists.options.length-1; count >-1; count--){
lists.options[count] = null;
}
for (i=0; items.length; i++){
var values = items[i].split("$");
var option = new Option(values[1], values[2], false, false);
lists.options[lists.length] = option;
}
}
</script>
</head>
<body>
<form action="" method="get" accept-charset="utf-8">
<select name="list" id="list">
<option>--</option>
</select>
</form>
</body>
</html>
我想我已经尝试了几乎所有中间的可能性,并且它们工作得很好(硬编码一个从 exe 接收它的字符串状态,直接在使用 javascript 处理它的 html 状态下呈现 .exe 的结果等),但是如果我把所有东西放在一起,它无法填充下拉列表......
我正在执行此代码是为了有几个相关的下拉列表,并且我正在按照此处看到的概念证明执行此操作。我没有使用 Ajax(或 Dajax,或 Dajaxice),因为在尝试多次后我无法正确安装它。
非常感谢!