AJAX und XML

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo,
    ich habe ein Problem mit AJAX...

    Quellcode

    1. <ajax>
    2. <asd1>asd2</asd1>
    3. <asd3>asd4</asd3>
    4. </ajax>


    Ich würde gerne mit alert(ajax('asd1')); den Inhalt printen lassen, kriege das aber nicht hin...

    Quellcode

    1. alert(http_request.responseXML.getElementsByTagName('ajax')[0].childNodes[0].nodeName);


    geht, ist aber nicht so, wie ich es möchte...
    Hat jemand ein Lösungsvorschlag für mich?

    Gruss
  • willst du an den tagnamen oder den inhalt?
    also für den namen wäre ich genauso vorgegangen
    man kann darüber iterieren, was will man also mehr

    wenn du nur den inhalt ein element brauchst, könntest du natürlich auch mit einer id arbeiten

    Quellcode

    1. <ajax>
    2. <asd1 id="dieses">asd2</asd1>
    3. <asd3>asd4</asd3>
    4. </ajax>

    Quellcode

    1. alert(http_request.responseXML.getElementById('dieses').value);


    aber DOM ist doch viel schöner
  • es gibt nix besseres als selfhtml

    http://de.selfhtml.org/javascript/objekte/array.htm#assoziative_arrays
    http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes

    und hier der beweis, dass es funktioniert:

    Quellcode

    1. <html><head><title>Test</title>
    2. <script type="text/javascript">
    3. <!--
    4. try {
    5. req = window.XMLHttpRequest ? new XMLHttpRequest():
    6. new ActiveXObject("Microsoft.XMLHTTP");
    7. } catch (e) {
    8. //Kein AJAX Support
    9. }
    10. var result = new Array();
    11. function ajax() {
    12. req.onreadystatechange = function() {
    13. if ((req.readyState == 4) && (req.status == 200)) {
    14. var dom = req.responseXML;
    15. var Knoten = dom.getElementsByTagName("ajax")[0];
    16. var nodename, value = "";
    17. for(var i=1; i<Knoten.childNodes.length; i+=2) {
    18. nodename = Knoten.childNodes[i].nodeName;
    19. value = dom.getElementsByTagName(nodename)[0].firstChild.nodeValue;
    20. result[nodename] = value;
    21. }
    22. }
    23. }
    24. req.open('GET', 'result.xml');
    25. req.send(null);
    26. }
    27. setTimeout("showResult()",1000);
    28. function showResult() {
    29. for(var Eigenschaft in result) {
    30. document.getElementById('res').innerHTML +=
    31. "result["+Eigenschaft+"] = "+result[Eigenschaft]+"<br />";
    32. }
    33. }
    34. //-->
    35. </script>
    36. </head>
    37. <body onload="ajax()">
    38. <div id="res"></div>
    39. </body></html>
    Alles anzeigen



    Ausgabe:
    result[asd1] = asd2
    result[asd3] = asd4
  • Wieso geht das nicht :( kann man result nicht übergeben?

    Quellcode

    1. <html><head><title>Test</title>
    2. <script type="text/javascript">
    3. <!--
    4. try {
    5. req = window.XMLHttpRequest ? new XMLHttpRequest():
    6. new ActiveXObject("Microsoft.XMLHTTP");
    7. } catch (e) {
    8. //Kein AJAX Support
    9. }
    10. var result = new Array();
    11. function ajax() {
    12. req.onreadystatechange = function() {
    13. if ((req.readyState == 4) && (req.status == 200)) {
    14. var dom = req.responseXML;
    15. var Knoten = dom.getElementsByTagName("ajax")[0];
    16. var nodename, value = "";
    17. for(var i=1; i<Knoten.childNodes.length; i+=2) {
    18. nodename = Knoten.childNodes[i].nodeName;
    19. value = dom.getElementsByTagName(nodename)[0].firstChild.nodeValue;
    20. result[nodename] = value;
    21. }
    22. eval('showResult' + '(\'' + result + '\')');
    23. }
    24. }
    25. req.open('GET', 'result.xml');
    26. req.send(null);
    27. }
    28. setTimeout("showResult()",1000);
    29. function showResult(result)
    30. {
    31. alert(result['asd1']);
    32. //mhm nix da?
    33. }
    34. //-->
    35. </script>
    36. </head>
    37. <body onload="ajax()">
    38. <div id="res"></div>
    39. </body></html>
    Alles anzeigen



    sorry, bin ein JS-Noob