javascript - getJSON 在 Safari 中有效但在 Chrome 或 Firefox 中无效后构建 HTML

标签 javascript jquery

嗨,我实际上是一个使用 javascript 和 html/css 的新手。

我不明白为什么我的脚本可以在 safari 上运行,但不能在 chrome 和 firefox 上运行... 有什么想法吗?

编辑:在 chrome 和 firefox 中,ul 和 li 元素都没有显示……而且之前的警报也不起作用。我将检查控制台中的错误并再次编辑帖子

<!DOCTYPE html>
<html>
    <head>
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
        <div id="patients" style="text-align:center">

        </div>
        <script type="text/javascript">
            $.getJSON("http://www.url.com/json",
                      function(data) {

                      var items = [];
                      alert(data[1].patient);
                      alert(data[1].hr);

                      $.each(data, function(index, val) {
                             items.push('<li id="' + index + '">' + val.patient + '<div style="display: none" id="'+val.patient+'"></div></li>');
                             });

                      $('<ul/>', {
                        'class': 'my-new-list',
                        html: items.join('')
                        }).appendTo('#patients');


                      });
            </script>

    </body>
</html>

最佳答案

您首先要了解的是 javascript 何时在页面上执行。

因此在您发布的代码中,浏览器首先加载 jquery 库。当它遇到你的<script>标记,然后它会尝试执行 $.getJSON()功能。

在您的脚本中,成功完成 json 请求后,它会尝试通过将生成的 html 添加到 #patients 来修改 DOM。 .这不会在 100% 的情况下起作用,因为您不能保证浏览器已经呈现#patients。

您应该首先将您的 javascript 代码包装在一个仅在页面加载后执行的包装器中。

这可以通过几种方式完成。这些是此处的 jQuery 特定方法,因为这就是您正在使用的方法。

$(document).ready(function(){
    //your code
});

或者:

$(function(){
    //your code
});

原生 javascript 代码看起来像这样:

document.addEventListener('load', function(){
    //your code
}, false);

我建议使用其中一种 jQuery 方法。

作为补充提示,您不需要输入 type="text/javascript"在你的脚本标签中。所有浏览器都知道 script 标签表示 javascript。幸运的是,我们早已度过了各种损坏版本的 Internet Explorer 的旧时光。

关于javascript - getJSON 在 Safari 中有效但在 Chrome 或 Firefox 中无效后构建 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11720189/

相关文章:

javascript - 辅助功能 (JAWS) - 带有 jQ​​uery 选择库的下拉列表

javascript - Polymer拖放事件对象属性包含父srcElement

jquery.validate.js - 验证文件名

javascript - jQuery 用户界面 : draggable on dragenter

javascript - toString().length 在一个有零且只有零的数字上总是返回 0

javascript - VueJS + Firebase 的 orderBy 问题

javascript - 如何创建动态表单vuejs vuetify?

jquery - Rails 中没有缓存时间戳的资源 URL

javascript - Bootstrap Dropdown 选择正在*所有* 下拉菜单上设置选择

jquery - 如何在手机上启用均衡器