如何循环无限DOM准备好了?与$ .getjson

时间:2014-02-15 16:12:01

标签: jquery getjson

我需要当Dom准备好循环无限以检查getjson时,怎么可能? 或者有其他形式尝试?

$( document ).ready(function() {
    $.getJSON( "js/json/nameplaylist.json", function( data ) {
        var items = [];
        $.each( data, function( key, value ) {
            $('#nameplaylist').append('<option>'+value.title+'</option>')
        });
    }).fail(function(){ // If the AJAX call encountered an error
        console.log('no load nameplaylist');
        });
}

3 个答案:

答案 0 :(得分:0)

您可以使用setInterval()来执行此操作

$(document).ready(function () {
    function load() {
        $.getJSON("js/json/nameplaylist.json", function (data) {
            var items = [];
            $.each(data, function (key, value) {
                $('#nameplaylist').append('<option>' + value.title + '</option>')
            });
        }).fail(function () { // If the AJAX call encountered an error
            console.log('no load nameplaylist');
        });
    }
    //load on dom ready
    load();
    //load every 5 seconds
    setInterval(load, 5000);
}

答案 1 :(得分:0)

您可以使用超时,类似:

$(callJSON);

function callJSON() {
    $.getJSON("js/json/nameplaylist.json", function (data) {
        var items = [];
        $.each(data, function (key, value) {
            $('#nameplaylist').append('<option>' + value.title + '</option>')
        });
    }).fail(function () { // If the AJAX call encountered an error
        console.log('no load nameplaylist');
    }).always(function () {
        setTimeout(callJSON, 5000);
    });
}

答案 2 :(得分:0)

在每个上操作DOM都很昂贵,你应该进行这种优化:

var opts = "";
$.each( data, function( key, value ) {
    opts += '<option>'+value.title+'</option>';
});
$('#nameplaylist').append(opts);

其他回复似乎解决了循环问题。