0

我正在尝试使用 .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),因为在尝试多次后我无法正确安装它。

非常感谢!

4

0 回答 0