首页 > 解决方案 > 我能读到一个词,但不能读到另一个词,这怎么可能?

问题描述

我正在制作带有编辑按钮的 CMS。当您单击编辑按钮时,它应该从 JSON 文件返回到 CMS 端的所有内容,以便您可以实际编辑。但是,当我尝试获取我的 JSONword时,我只能获取一个,而我word的 JSON 中有 2 个。

这就是我的 JSON 的样子:

{
  "main_object": {
    "id": "new",
    "getExerciseTitle": "TestToConfirm",
    "language": "nl_NL",
    "application": "lettergrepen",
    "main_object": {
      "title": "TestToConfirm",
      "language": "nl_NL",
      "exercises": [{
          "word": "huishoudelijk",
          "syllables": [
            "huis",
            "houdelijk",
            "",
            ""
          ]
        },
        {
          "word": "Kleedt u zich maar uit.",
          "syllables": [
            "Kleed",
            "u",
            "zich",
            "uit"
          ]
        }
      ]
    },
    "dataType": "json"
  }
}

这就是我试图遍历我的方式word,以便我可以获取所有内容。我确实必须注意,我还将获取数据,syllables并且我不完全确定创建 2 个不同的循环来获取数据是否不好。还是建议在 1 个循环中同时执行?

$(document).ready(function() {


  $.getJSON('json_files/jsonData_' + ID + '.json', function(json) {
    // console.log(json);


    var exercisetitle = json.main_object.getExerciseTitle;
    // console.log(exercisetitle);
    $("#getExerciseTitle").val(exercisetitle);

    var exercise = json.main_object.main_object.exercises;


    $.map(exercise, function(exercise, i) {
      var myindex = 1;
      $("#addOpdracht").click();
      $(".exerciseGetWordInput_" + myindex).val(exercise.word)
      myindex++;
    });

  });

});

代码exerciseGetWordInput_:#addOpdracht 只是一个创建新练习块的按钮。我认为这与如何循环或我的应用程序失败的可能原因没有太大关系。

function getWordInput(id, cValue) {
  cValue = cValue || '';
  var wInput = $('<input/>', {
    'class': 'exerciseGetWordInput_' + id + ' form-group form-control ExerciseGetWordInput',
    'type': 'text',
    'name': 'question_takeAudio_exerciseWord[' + exerciseAudioInput + ']',
    'placeholder': 'Exercise',
    'id': 'exerciseGetWordInput',
    'required': true
  });
  return wInput;
}

标签: javascriptjqueryjson

解决方案


移出var myindex = 1循环

var myindex = 1;
$.map(exercise, function(exercise, i) {
  $("#addOpdracht").click();
  $(".exerciseGetWordInput_" + myindex).val(exercise.word)
  myindex++;
});

或者你也可以避免使用额外的变量,比如下面,each而是使用

$.each(exercise, function(exercise, i) {
  $("#addOpdracht").click();
  $(".exerciseGetWordInput_" + i).val(exercise.word) // starts with 0
});

推荐阅读