我正在尝试使用执行.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 instate中呈现.exe的结果等) ,但如果我把所有东西放在一起,它就无法填充下拉列表......
我正在执行此代码以获得几个依赖的下拉列表,我按照here的概念证明进行操作。我没有使用Ajax(或Dajax,或Dajaxice),因为我尝试多次后无法正确安装它。
非常感谢!