Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 getJSON。每一个都只在某些时候起作用_Javascript_Jquery_Html - Fatal编程技术网

Javascript getJSON。每一个都只在某些时候起作用

Javascript getJSON。每一个都只在某些时候起作用,javascript,jquery,html,Javascript,Jquery,Html,我遇到了一个我无法理解的有趣问题。我正在将一些数据动态加载到html中 我发现,当我刷新页面时,有时会加载数据,但更常见的是,那里什么都没有。是页面加载太快,还是每次重新加载页面时都无法处理文件 我尝试了多种浏览器,体验都是一样的 这是我的html: <select id="group-select-user-access" class="blue-text"> <option value="" disabled selected>Select a Google

我遇到了一个我无法理解的有趣问题。我正在将一些数据动态加载到html中

我发现,当我刷新页面时,有时会加载数据,但更常见的是,那里什么都没有。是页面加载太快,还是每次重新加载页面时都无法处理文件

我尝试了多种浏览器,体验都是一样的

这是我的html:

<select id="group-select-user-access" class="blue-text">
     <option value="" disabled selected>Select a Google Group</option>
</select>
对于JS/jQuery,我是一个比较新的人,所以非常感谢您的帮助


接下来我应该朝什么方向进行故障排除?

可能是因为在尝试修改DOM时,它没有完全加载

尝试将脚本标记移动到文档的末尾,或者使用$document.ready包装js代码


这样,您的代码将等待整个文档加载完毕,然后再尝试向其添加内容

每当我看到这些单词时,这些单词只会在某些时候起作用,我可以确定问题是一个竞争条件,甚至不需要阅读其他单词。您可能需要使用document.ready来包装$.getJSON调用。它可能在DOM存在之前运行。我不记得jQuery是否能保护您不受此影响。所以竞争条件是,有时dom先呈现,有时javascript先运行。您的选择器过于复杂了,$'select[id=group select user access]'最好表示为“$group select user access”,但@mkaatman是对的,您有一些竞争条件。你能提供关于其他情况的任何其他信息吗?可能DOM没有一直加载。将进程包装到文档ready将脚本标记移动到文档末尾。嗯,好的,我尝试了$document.readyfunction{}但没有成功,这在100%的时间内都不起作用。此代码所在的脚本标记已位于文档末尾。至少可以说很奇怪。我不太清楚否决票的情况,如果需要更多信息,我很乐意提供。
<script type="text/javascript">
        var group_list = "json/google_group_list.json";

        $.getJSON(group_list, function(json) {
            $.each(json, function(key) {
                var email_stripped = json[key].substring(0, json[key].lastIndexOf("@"));
                $('select[id=group-select-user-access]').append('<option value="' + email_stripped + '">' + json[key] + '</option>');
            });
        });
</script>
["email1@test.com", "email2@test.com", "email3@test.com", ...]
$(document).ready(function() {
var group_list = "json/google_group_list.json";

        $.getJSON(group_list, function(json) {
            $.each(json, function(key) {
                var email_stripped = json[key].substring(0, json[key].lastIndexOf("@"));
                $('select[id=group-select-user-access]').append('<option value="' + email_stripped + '">' + json[key] + '</option>');
            });
        });
    })