JSON&;JavaScript语法

JSON&;JavaScript语法,javascript,json,Javascript,Json,我正在尝试打印JSON对象属性的列表。我还尝试打印出单个ob对象的属性。控制台的打印输出表明我正在打开文件并接收两个对象和子对象。但是,我在尝试循环遍历对象并打印出每个对象的属性时犯了一个错误 ... <script type="text/javascript"> var dta1; $(document).ready(function() { $.ajax({ type : "GET", url : "

我正在尝试打印JSON对象属性的列表。我还尝试打印出单个ob对象的属性。控制台的打印输出表明我正在打开文件并接收两个对象和子对象。但是,我在尝试循环遍历对象并打印出每个对象的属性时犯了一个错误

...
<script type="text/javascript">
    var dta1;
    $(document).ready(function() {
        $.ajax({
            type : "GET",
            url : "data/data5.json",
            success : function test(data) {
                dta1 = data.object1;
                dta2 = data.object2;

                console.log("object1", dta1);               
                console.log("object2", dta2);               
            }
        });
    });
</script>

</head>
<body>
    <script type="text/javascript">
        for(i in dta1){
            document.write(dta1[i].x);
        }
        document.write(dta1["object11"].x);
    </script>
</body>

由于使用jQuery“document ready”处理程序,第二个脚本块将在头中的脚本块之前运行,该处理程序仅在文档完全加载后运行

此外,您不能依赖于在下一个代码块运行之前完成的异步请求(AJAX)。使用通过AJAX检索的数据的任何内容都应该在“success”回调中调用

您可能应该做的是在HTML中创建一个容器元素,例如

<body>
    <ul id="data-container"></ul>
</body>

    并将这些值附加到AJAX成功回调中,例如

    success : function test(data) {
        var dta1 = data.object1;
        var dta2 = data.object2;
    
        var container = $("#data-container");
    
        for (var o in dta1) {
            if (dta1.hasOwnProperty(o)) {
                container.append($("<li>").text(dta1[o].x));
            }
        }
    }
    
    成功:功能测试(数据){
    var dta1=data.object1;
    var dta2=data.object2;
    var容器=$(“#数据容器”);
    用于(dta1中的var o){
    if(dta1.hasOwnProperty(o)){
    container.append($(“
  • ”).text(dta1[o].x)); } } }
  • 由于使用了jQuery“document ready”处理程序,第二个脚本块将在头中的脚本块之前运行,该处理程序仅在文档完全加载后运行

    此外,您不能依赖于在下一个代码块运行之前完成的异步请求(AJAX)。使用通过AJAX检索的数据的任何内容都应该在“success”回调中调用

    您可能应该做的是在HTML中创建一个容器元素,例如

    <body>
        <ul id="data-container"></ul>
    </body>
    
    
    
      并将这些值附加到AJAX成功回调中,例如

      success : function test(data) {
          var dta1 = data.object1;
          var dta2 = data.object2;
      
          var container = $("#data-container");
      
          for (var o in dta1) {
              if (dta1.hasOwnProperty(o)) {
                  container.append($("<li>").text(dta1[o].x));
              }
          }
      }
      
      成功:功能测试(数据){
      var dta1=data.object1;
      var dta2=data.object2;
      var容器=$(“#数据容器”);
      用于(dta1中的var o){
      if(dta1.hasOwnProperty(o)){
      container.append($(“
    • ”).text(dta1[o].x)); } } }
    • 打印dta1时,您如何知道它已加载?lc2817,console.log(“object1”,dta1);我知道,我谈到了html部分,这正是答案中所说的。您如何知道dta1在打印时已加载?lc2817,console.log(“object1”,dta1);我知道,我谈到了html部分,这正是答案中所说的。