25. november 2010 - 10:25
Der er
25 kommentarer og 1 løsning
JQuiry læs xml
Hej Eksperter
Jeg forsøger at læse en xmlfil med JQuiry. Har forsøgt dette. Hvad gør jeg forkert
<all>
<node1>test</node1>
</all>
<script>
$(document).ready(function(){
$.ajax({
type: "GET",
url: "minurl",
dataType: "xml",
success: function(xml) {
$(xml).find('all').each(function(){
var node1 = $(this).attr('node1').text();
$(node1);
});
}
});
});
</script>
har eksemplet herfra
http://think2loud.com/reading-xml-with-jquery/
Annonceindlæg fra Infor
25. november 2010 - 10:56
#1
Jeg får xml fint tilbage men jeg kan ikke få fat i noden
25. november 2010 - 11:16
#2
har også prøvet med $(xml).find('all').each(function(){ var node1 = $(this).find('node1').text(); $(node1); }); men det virker ikke. Jeg kan se med Charles at jeg fint får xml'en tilbage
25. november 2010 - 11:44
#3
Jeg vil helt klart anbefale at arbejde med JSON da det er designet til Javascript og er meget nemmere at arbejde med når du er i script miljø.
Desuden fylder JSON strengen for det meste mindre end XML og når du trækker den ind i dit script så opfattes det som et objekt på lignende måde som det objekt det er konverteret fra.
Hvis det ikke er muligt at levere XML'en som JSON, så findes der faktisk plugin der kan konvertere XML til JSON:
http://plugins.jquery.com/project/xml2json Demo:
http://www.fyneworks.com/jquery/xml-to-json/
25. november 2010 - 12:06
#4
Tak for input men p.t vil jeg gerne forsætte med denne løsning. Har prøvet at sætte et par alerts ind. Det viser sig at jeg aldrig får test1 <script type="text/javascript"> $(document).ready(function(){ alert("test0"); $.ajax({ type: "GET", url: "minurl", dataType: "xml", success: function(xml) { alert("test1"); $(xml).find('all').each(function(){ var node1 = $(this).find('node1').text(); $(node1); }); } }); }); </script>
25. november 2010 - 12:09
#5
det jeg får tilbage er text/xml;charset=UTF-8
25. november 2010 - 12:48
#6
Din sidste linie "$(node1);" hvad skal den ;-)
Prøv ellers jQuery Get functionen:
$.get('minurl', function(xml) { $(xml).find('all').each(function(){ var node1 = $(this).find('node1').text(); alert(node1); }); http://api.jquery.com/jQuery.get/
25. november 2010 - 12:53
#7
Æh glemte lige den sidste });
$.get('minurl', function(xml) { $(xml).find('all').each(function(){ var node1 = $(this).find('node1').text(); alert(node1); }); });
25. november 2010 - 12:55
#8
Kigge lige din oprindelige script igennem, du har en } for meget! $(node1); }); } }); }); Skal værre: $(node1); }); }); });
25. november 2010 - 13:29
#9
jeg kan simpelthen ikke få det til at virke. Fatter det ikke <script type="text/javascript"> alert("test"); $.get('minurl', function(xml) { alert("test1"); $(xml).find('all').each(function(){ alert("test2"); var node1 = $(this).find('node1').text(); alert(node1); }); }); </script> Kommer til test og test1 men ikke til test2
25. november 2010 - 13:37
#10
Hvis jeg sætter en alert(xml); efter alert("test1"); er den tom???????????????
25. november 2010 - 13:37
#11
men minurl giver det forventede tilbage
25. november 2010 - 13:39
#12
Respose Content-Type text/xml;charset=UTF-8
25. november 2010 - 13:41
#13
Faktisk har jeg allerede lavet det i JAVA og det virker fint, ville bare gerne se om jeg ikke kunne få det til at virke i JavaScript, men det er åbenbart svært :-(
25. november 2010 - 13:47
#14
alert(xml.length); giver 0
25. november 2010 - 14:04
#15
Bare en tanke, du har vel udskiftet "minurl" med et gyldigt link?
25. november 2010 - 14:04
#16
Hvad får du hvis du kalder linket direkte i din browser? Prøv eventuelt at debugge i Firefox/Firebug
25. november 2010 - 14:39
#17
Til det første så ja :-) Jeg har taget det som minurl henviser til (noget dynamisk sjov) og smidt det over i en fil. Nu kan jeg få fat i indholdet. Det vil sige jeg kan få det vist i en alert. Hvordan får jeg det ud på siden. Har prøvet med document.write(node1); og $(node1);
25. november 2010 - 14:45
#18
Brug jQuery ;-) Hvis du har en div der ser således ud: <div id="xmloutput"></div> Kan du i dit script gøre følgende: $('#xmloutput').html(node1);
25. november 2010 - 14:46
#19
Men "document.write(node1);" burde også virke.
25. november 2010 - 14:50
#20
Glem min sidste kommentar, din ajax funktion kører jo først efter xml er hentet, og jeg går ud fra at din side er færdig, så dit script vil skrive i bunden, og det er sikkert ikke din tanke, eller hvad? Men brug mit script i #18 så er du sikker på at din tekst kommer hvor du forventer.
25. november 2010 - 15:23
#21
Cool. Nu mangler jeg så bare en ting. Hvordan får jeg decodet tegn som < så det bliver til < har prøvet med node1 = Encoder.htmlDecode(node1);
25. november 2010 - 16:02
#22
25. november 2010 - 16:02
#23
Det er det her jeg skal have decodet, så det bliver opfattet som html. <div>LADIDA</div></div><img alt="info" src="/bla/bla1/billede.png" style="border: 0pt none;" class="minklasse">
25. november 2010 - 16:14
#24
he he det virker næsten nu. Nu mangler jeg tilsyneladende bare at få et par "" lavet om til "
25. november 2010 - 16:45
#25
Nå men du skal have mange tak for hjælpen. Læg endelig et svar så jeg kan lukke
25. november 2010 - 17:42
#26
Var så lidt :-)
Vi tilbyder markedets bedste kurser inden for webudvikling