Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django中使用javascript的动态dropdownlists_Javascript_C++_Python_Html_Django - Fatal编程技术网

django中使用javascript的动态dropdownlists

django中使用javascript的动态dropdownlists,javascript,c++,python,html,django,Javascript,C++,Python,Html,Django,我试图用.exe程序执行的结果填充dropdownlist。.exe将返回由特殊字符分隔的项目串联。这将依次被views.py中的相应视图捕获,并呈现到.html中。在这个.html中,有javascript代码在窗口加载时运行,使用特殊字符分割呈现的字符串,并(理论上)填充dropdownlist 我的部分代码如下: C++代码(将被编译为.exe) 最后是包含javascript函数的html文件 <html> <head> <me

我试图用.exe程序执行的结果填充dropdownlist。.exe将返回由特殊字符分隔的项目串联。这将依次被views.py中的相应视图捕获,并呈现到.html中。在这个.html中,有javascript代码在窗口加载时运行,使用特殊字符分割呈现的字符串,并(理论上)填充dropdownlist

我的部分代码如下:

C++代码(将被编译为.exe)

最后是包含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>

window.onload=函数Func(){
var list=document.getElementById('list');
var liststxt=新数组();
liststxt[1]=“{{list}}”;
var items=listsText[1]。拆分(&);
对于(var count=lists.options.length-1;count>-1;count--){
lists.options[count]=null;
} 
对于(i=0;items.length;i++){
var值=项目[i]。拆分($);
var期权=新期权(值[1],值[2],假,假);
lists.options[lists.length]=选项;
}                          
} 
-- 
我想我已经尝试了几乎所有的中间可能性,它们工作得非常完美(硬编码一个字符串,从exe接收它,在html中直接呈现.exe的结果,使用javascript处理它,等等),但是如果我把所有的东西放在一起,它就无法填充dropdownlist

我写这段代码是为了有几个依赖的dropdownlists,我是在看到概念验证之后做的。我没有使用Ajax(或Dajax,或Dajaxice),因为我在尝试了很多次之后无法正确安装它


非常感谢

您不需要“安装”Ajax:它是一种技术,而不是一个库。但是,您能提供一个exe文件输出的示例吗?exe输出如下:
1$First Item&2$Second Item&3$Third Item…
此信息在视图中接收,因为我可以使用HttpResponse在屏幕上显示它。它也到达了html,因为我可以将它呈现到html并显示它。但是我在javascript函数中使用它失败了。另一方面,如果我将从exe获得的相同字符串传递给javascript函数,但现在我在views.py中对其进行硬编码,它会工作,您确定它完全相同吗?在价值之前或之后是否有额外的东西?如果在视图中放置一个print语句,例如
print“Output:“+y+”…”
,您会得到什么?是的,我看不出有任何区别……如果我使用print获取在“y”中得到的内容,我复制它并在视图中手动硬编码,那么javascript工作正常
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})
<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>