Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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对象循环后动态创建文本框_Javascript_Jquery_Ajax_Json - Fatal编程技术网

通过javascript对象循环后动态创建文本框

通过javascript对象循环后动态创建文本框,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我有一个javascript,它通过ajax请求向服务器发送一些信息,并接收一些数据作为问题,而他们的ID作为json数组 这就是我从服务器收到的json数组响应的样子: [ { "ID":"1", "question":"Write a function called addNum. " }, { "ID":"3", "question":"Write a function called sumDoubl

我有一个javascript,它通过ajax请求向服务器发送一些信息,并接收一些数据作为问题,而他们的ID作为json数组

这就是我从服务器收到的json数组响应的样子:

   [
     {
      "ID":"1",
      "question":"Write a function called addNum. "
        },
     {
      "ID":"3",
      "question":"Write a function called sumDouble "
      }
    ]
这是javascript:

$(document).ready(function(){
    $("form#input_qnumber").submit(function() {

    var questions = $('#questions').attr('value'); // written question
    var quizname = $('#quizname').attr('value');

    if (questions) { // values are not empty
        $.ajax({
            type: "POST",
            url: "https://xxxx",
            contentType: "application/x-www-form-urlencoded; charset=utf-8",
            dataType: "application/json",
            data: 'questions='+questions+'&quizname='+quizname,

            success: function (data) 
            {
                var JSONObject = JSON.parse(data); 

                for (var key in JSONObject) {
                    if (JSONObject.hasOwnProperty(key)) {
                        console.log(JSONObject[key]["ID"] + ", " + JSONObject[key]["question"]);
                    }
                }



            }

        });
    }
    else {
        $('div#createquizresp').text("Enter question ID's separated by a comma to be included in the quiz");
        $('div#createquizresp').addClass("error");
    } // else
    $('div#createquizresp').fadeIn();
    return false;
});
});

如您所见,我可以将响应json解析为javascript对象数组,循环并在控制台中转储内容。但我希望创建textarea元素,将数组中的'id'键赋予其id属性,并使用数组中相应的问题键对其进行标记。在此之后,我可以将元素附加到html中的div中。但我真的不知道该怎么做,也不知道这是否可能。请停下来

如果还需要标签元素

for (var key in JSONObject) {
    if (JSONObject.hasOwnProperty(key)) {
        $('<label>')
            .attr('for', JSONObject[key]["ID"])
            .html(JSONObject[key]["question"])
            .appendTo('wherever_you_want');
        $('<textarea>')
            .attr('id', JSONObject[key]["ID"])
            .appendTo('wherever_you_want');
    }
}
for(JSONObject中的var键){
if(JSONObject.hasOwnProperty(键)){
$('')
.attr('for',JSONObject[key][“ID”])
.html(JSONObject[key][“问题”])
.appendTo('你想去哪里');
$('')
.attr('id',JSONObject[key][“id”])
.appendTo('你想去哪里');
}
}

创建动态元素输入和标签,然后将这些元素附加到父div或符合您要求的正文中

演示:


var textbox=document.createElement('input');
setAttribute(“id”,JSONObject[key][“id”]);
var labell=document.createElement('label');
setAttribute(“for”,JSONObject[key][“question”]);
labell.innerHTML=JSONObject[key][“question”];
document.getElementById('display').appendChild(文本框);
document.getElementById('display').appendChild(labell);

基恩的回答非常完美。一个建议是,给外国ID加一个前缀。为了安全起见,您还可以将ID分配给其他类型的元素(即答案)

for(JSONObject中的var键){
if(JSONObject.hasOwnProperty(键)){
$(“#提问问题”)
.append($('')
.attr('for','Q'+JSONObject[key][“ID”])
.html(JSONObject[key][“question”])
.append($('')
.attr('id','Q'+JSONObject[key][“id”]))
}
}

这是一个完美的问题,但是,有没有一种方法可以先通过这个创建一个表单,然后将它附加到div,然后将该表单中的所有元素附加到该表单中。
<div id ="display"></div>

<script>
var textbox = document.createElement('input');
textbox.setAttribute("id", JSONObject[key]["ID"]);
var labell = document.createElement('label');
labell.setAttribute("for",JSONObject[key]["question"]);
labell.innerHTML = JSONObject[key]["question"];

document.getElementById('display').appendChild(textbox);
document.getElementById('display').appendChild(labell);
</script>
for (var key in JSONObject) {
    if (JSONObject.hasOwnProperty(key)) {
        $('#quizquestions')
            .append($('<label>')
                .attr('for', 'Q' + JSONObject[key]["ID"])
                .html(JSONObject[key]["question"]))
            .append($('<textarea>')
                .attr('id', 'Q' + JSONObject[key]["ID"]))
    }
}