Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.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
Javascript 在页面加载期间使用Ajax函数调用填充html下拉列表_Javascript_Php_Ajax_Json - Fatal编程技术网

Javascript 在页面加载期间使用Ajax函数调用填充html下拉列表

Javascript 在页面加载期间使用Ajax函数调用填充html下拉列表,javascript,php,ajax,json,Javascript,Php,Ajax,Json,我有一个下拉列表,需要填充json文件中的内容。我有一个php文件,可以解析这个json文件并返回所需的输出 这是我的json <?php $filecontents = file_get_contents('users.txt'); $jsonIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator(json_decode($filecontents, TRUE)),Recur

我有一个下拉列表,需要填充json文件中的内容。我有一个php文件,可以解析这个json文件并返回所需的输出

这是我的json

<?php
        $filecontents = file_get_contents('users.txt');

        $jsonIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator(json_decode($filecontents, TRUE)),RecursiveIteratorIterator::SELF_FIRST);

        foreach ($jsonIterator as $key => $val) {
                if(!is_array($val) && $key == "templatename"){
                        echo '<option>'.$val.'</option>';
                }
        }
?>
这是我的html页面

<script>
         window.onload = function() {
              loadTest();
         };

        function loadTest()
        {
                var xmlhttp=new XMLHttpRequest();
                document.getElementById("testdropdown").innerHTML=xmlhttp.responseText;

                xmlhttp.open("get","2test.php",true);
                xmlhttp.send();
        }
</script>


<select name="test dropdown" id="testdropdown"></select>
我所做的ajax查询似乎不起作用

这是我的php文件的输出

<option>1-1</option><option>1-2</option>

在标签中添加以下内容之一,以便在页面加载时调用loadTest:

如果使用jQuery:

$(document).ready(function() {
    loadTest();
});
否则:

window.onload = function() {
    loadTest();
};

结果我错过了几行代码

            var xmlhttp=new XMLHttpRequest();
            xmlhttp.onreadystatechange=function()
            {
                    if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    {
                            document.getElementById("testdropdown").innerHTML=xmlhttp.responseText;
                    }
            }
            xmlhttp.open("get","2test.php",true);
            xmlhttp.send();

这似乎解决了问题。

看来我的Ajax查询是错误的。当我尝试使用您的方法加载一个更普通的javascript方法时,它起了作用。