Autor Zpráva
nyllo
Profil
Zdravím,

potřebuji automaticky aktualizovat obsah xml souboru, který se mění v prodlevě 1 - 3 min. Je pro mě důležité to aktualizovat již v tomto kódu.

XML načítám tímto js.

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "http://api.example.com/data.xml",
        dataType: "xml",
        success: xmlParser
    });
});

function xmlParser(xml) {
    $(xml).find("apidat").each(function () {

        $(".api").append('<div class="title">' + $(this).find("title").text() + '</div><div class="text">' + $(this).find("text").text() + '</div><div class="callmeback">' + $(this).find("callmeback").text() + '</div><div class="cover"><img src=" ' + $(this).find("cover").text() + ' "</img></div>');

    });    
}

Předem děkuji za rady.
_es
Profil
Asi chceš použiť funkciu setInterval.
nyllo
Profil
Klidně bych jí použil ale nepodařilo se mi to za implementovat do kódu.
Taps
Profil
nyllo:
pro inspiraci http://www.samundra.com.np/automatic-ajax-call-using-jquery/608
nyllo
Profil
Napsal jsem to takto ale data to neaktualizuje, ale znovu vypíše.

$(document).ready(function () {
    $(function () {
        setInterval(GetValues, 2000);
    });

});

function GetValues(){
    $.ajax({
        type: "GET",
        url: "http://api.example.com/data.xml",
        dataType: "xml",
        timeout: 10000,
        success: xmlParser
    });
}
function xmlParser(xml) {
        $(xml).find("track").each(function apidata() {

            $(".api").append('<div class="artists">' + $(this).find("artists").text() + '</div><div class="title">' + $(this).find("title").text() + '</div><div class="callmeback">' + $(this).find("callmeback").text() + '</div><div class="cover"><img src=" ' + $(this).find("cover").text() + ' "</img></div>');

        });
}
Radek9
Profil
nyllo:
Musíš ten div s třídou api nejdřív promazat, než do něj začneš ty data přidávat.
nyllo
Profil
Tak jsem tu funkci napsal takto. Nyní ale text nevzhledně bliká.

$(document).ready(function () {
    
    GetValues();
    
    $(function () {
        setInterval( function() {
            $('.api').empty();
            GetValues();
        },  5000);
    });
    
});

function GetValues(){
    $.ajax({
        type: "GET",
        url: "http://api.example.com/data.xml",
        dataType: "xml",
        timeout: 100000,
        success: xmlParser
    });
}
function xmlParser(xml) {
        $(xml).find("track").each(function () {

            $(".api").append('<div class="artists">' + $(this).find("artists").text() + '</div><div class="title">' + $(this).find("title").text() + '</div><div class="callmeback">' + $(this).find("callmeback").text() + '</div><div class="cover"><img src=" ' + $(this).find("cover").text() + ' "</img></div>');

        });
}
Radek9
Profil
nyllo:
Myslím vyprázdnit před tím opětovným plněním (tedy před tím each), ne před načítám. Je logické, že to blikne, když to ještě na to načtení čeká.
nyllo
Profil
Už to funguje jak má.

Děkuji moc všem za rady.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0