Hejsa
Jeg er ved at rode med jQuery og noget AJAX via JSON, og leger bare for at forsøge at lære det bedre og forstå det (sådan lærer jeg godt).
Jeg kan få min jQuery til at få noget JSON tilbage via AJAX, og arbejde med det, men opdagede noget underligt.
Mit forsøg gik ud på at få et array af objekter tilbage hvor hvert objekt har en property kaldet "name".
Min HTML ser således ud med en knap og en div til resultatet:
- <input type="button" id="ClickMe" value="Click this button" />
- <div id="HereIsResult">Result goes here</div>
Og dette er mit script:
- <script>
- $("#ClickMe").click(function () {
- alert("clicked!");
- $.getJSON("/Test/GetJsonResult", null, function (data) {
- alert("data recieved");
- for (var i = 0; i < data.length; i++) {
- var myObj = data[i];
- alert("Name: " + myObj.Name);
-
- $("#HereIsResult").css("background-color", "red");
- //$("#HereIsResult").text(myObj.Name); //udkommenteret for at få appendTo til at virke mere end en enkelt gang
- var newDiv = $("<div/>",
- {
- id: i,
- text: myObj.Name
- });
- newDiv.appendTo("#HereIsResult");
- alert("appended : " + i + " - " + myObj.Name);
- }
- });
- });
- </script>
Jeg kan sagtens få disse objekter tilbage og lave min resultat-div rød (hurtig og nem illustration om den har ændret noget) og så derefter iterere igennem dem.
Først ændrede jeg teksten i div'en sammen med en alert så jeg kunne se hver tekst ændre sig i den røde resultat-div.
Nu ville jeg så tilføje flere div's indeni denne eksisterende med hver deres "name" udskrevet i den - så jeg fik en komplet liste.
Det "sjove" er nu at hvis jeg ændrer teksten indeni i resultat-div'en så vil den kun appende en enkelt div og ændrer så alt tekst indeni resultat-div'en og dens child-div (den jeg har lavet) og for hvert nyt objekt så tilføjes der ikke flere div'er men kun teksten ændres.
Nu har jeg udkommenteret den del der ændrer teksten og nu virker det, men forstår ikke helt hvorfor.
Nogen der kan hjælpe mig videre?