javascript - Windows 7 Gadget AJAX ophørte med at arbejde

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver en lille gadget, der viser mig den nuværende status for min spilserver.
Den får sine oplysninger via en URL, der returnerer JSON. I begyndelsen fungerede det fint. Men nu ser det ud til at sidde fast ved AJAX-opkaldet.


Dette er mit script:


function start() {
$("body").css({
    height: "100px",
    width: "130px",
    margin: 0
});

$("#refresh").click(function (event) {
    event.preventDefault();
    fetch\_info();
});

fetch\_info();
};

function fetch\_info() {
var now = new Date();
var msec = now.getTime();
ajax = new ActiveXObject("Msxml2.XMLHTTP");
ajax.open("GET", "http://the.amazing.url?msec="+msec, true);
ajax.onreadystatechange = function() {
    if (ajax.readyState === 4) {
        if (ajax.status === 200) {
            var json = $.parseJSON(ajax.responseText);
            if (json.map != "error")
            {
                $("#map").html(json.map);
                $("#mode").html(json.gamemode);
                $("#current").html(json.players);
                $("#max").html(json.max\_players);
            }
            else
            {
                $("#map").html("crashed");
            }
        } else {
            $("#map").html("error");
        }
    }
    else
    {
        $("#map").html("fetching data");
    }
}    
ajax.send(null);    
}


Når widgeten starter, viser den 'hentning af data', men efter det sker der intet. Det bliver gyldigt JSON Data.


Er der nogen der ved hvorfor eller en måde at debug dette script?

Bedste reference


Der er to semikolonfejl. De er sandsynligvis opstået under din forbedring af scriptet, og semikolonet blev flyttet. Linje 14 behøver ikke en semikolon, men Linje 44 gør.


Linje 14:


13:       fetch\_info();
14:    }


Linje 44:


44:    };
45:    ajax.send(null);    
46:    }


Hvad angår Debugging Scripts, bruger jeg de indbyggede browserudviklerværktøjer som F12 i IE eller Developer Tools i Chrome. Da jeg lavede min Gadget, prøvede jeg alle scripts med en grundlæggende webside, så jeg kunne se browser javascript-konsollen.


JSLint er også nyttigt. Jeg vælger dog følgende muligheder, når jeg bruger den:
Antag Windows, tolerer ubrugte parametre, tolerer mangler 'brug strenge' pragma, tolerer mange var-udsagn pr. Funktion, og tolerer rodet hvidt rum. Ellers vil JSLint blive vild på dit script over ting, der ikke betyder noget. Håber det hjælper. [4]


Også hvis du har Visual Studio kan du bruge sin script debugger. Her er en artikel, der forklarer hvordan: http://www.howtogeek.com/howto/windows-vista/how-to-debug-a-windows-vista-sidebar-gadget-with-visual-studio/[5]