簡體   English   中英

如何使用getJSON從JSON對象將數據輸出為HTML

[英]How to output data as HTML from JSON object using getJSON

您好,我會盡量保持簡單而簡短

我有一個getJSON函數,每5秒運行一次。 現在,當我使用document.write函數顯示數據時,它似乎想更新。 頁面卡在了加載循環中。 如何獲取數據以顯示在頁面上? 我的JSON很好,但無論如何我都會告訴您。

  <script type="text/javascript">

 $.ajaxSetup ({  
    cache: false  
     });  

    setInterval(function(){ $.getJSON('names.json', function(data) {

    for(i in data)  {

        document.write(data[i] + "<br/>");
    }

  });



},5000);

 </script>

這是JSON對象

{
  "one": "",
  "two": "Beady little eyes",
  "three": "Little birds pitch by my doorstep"
}

實際上不要使用document.write 頁面加載后,將擦除該頁面。 使用(jQuery的)DOM方法來操作DOM。

$.getJSON('names.json', function(data){
    for(var i in data){
        $('#myDiv').append(data[i]);
    }
});

我建議您使用jQuery,

我用它從我的json項目創建了一個表單,希望對您有所幫助...

function jsonFormCreator(frmJSON)
{
    var createdHTML = ""; var elementType, id;
    console.log(JSON.stringify(frmJSON));



    for(item in frmJSON)
    {
        formElement = frmJSON[item];    elementType = formElement.elementType;  id = formElement.id;

        if(elementType == "input")
        {
            createdHTML += "<input id='" + id +"'";
            if(formElement.type == "checkbox") 
            {createdHTML += " type='" + formElement.type + "' checked='" + formElement.checked + "'";}
            else{createdHTML += "type='" + formElement.type + "' value='" + formElement.value + "' onclick='" + formElement.onclick + "'";}
            createdHTML += "/><br>"
        }
        else if(elementType == "textarea")
        {createdHTML += "<textarea id='" + formElement.id  + "' rows='" + formElement.rows +  "' cols='" + formElement.cols + "' value='" + formElement.value + "'></textarea><br>";}
        else if(elementType == "select")
        {
            var options = formElement.values;
            createdHTML += "<select id='" + formElement.id+ "'>";
                for(i = 0 ; i < options.length ; i++)
                {createdHTML += "<option value='" + options[i][0] + "'>" + options[i][1] + "</option>";} //Adding each option
            createdHTML+= "</select><br>";
        }
    }
    console.log("Complete");console.log(createdHTML);
    document.getElementById('mainContainer').innerHTML = createdHTML;//Adding to the DOM
}

我的JSON看起來像這樣

{
    "0": {
        "elementType": "input",
        "id": "frm1",
        "type": "text",
        "value": "form Liam",
        "label": "Test Text Input"
    },
        "itemBTN": {
        "elementType": "input",
        "id": "frmAlert",
        "type": "button",
        "onclick" : "loader(homePage);",
        "value": "Home Page",
        "label": ""
    },
    "item2": {
        "elementType": "textarea",
        "id": "frm2",
        "rows": 5,
        "cols": 30,
        "value": "helddddddddlo",
        "label": "Test Textarea"
    },
    "item3": {
        "elementType": "select",
        "id": "frm3",
        "values": [
            [
                "value1",
                "Pick Me"
            ],
            [
                "value2",
                "UserDis2"
            ],
            [
                "value3",
                "UserDis3"
            ],
            [
                "value4",
                "UserDis4"
            ],
            [
                "value5",
                "UserDis5"
            ],
            [
                "value6",
                "UserDis6"
            ]
        ],
        "label": "Test Select"
    },
    "item4": {
        "elementType": "input",
        "id": "frm4",
        "label": "Checkbox",
        "type": "checkbox",
        "checked": true
    }
}

這段代碼使用id mainContainer將表單添加到我的div標簽中,我知道很多代碼,但是希望對您有所幫助!

您想要渲染將包含數據的dom,然后在獲取數據時更新dom。

舉一個非常簡單的例子,您的頁面上有一個容器

<div id="one"></div>

然后在你的ajax成功處理程序中

$("#one").text(json.one);

這使用jquery來獲取ID為“ one”的dom元素,並更新其文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM