Jurik: Mit PHP einen XML Code erzeugen und an JS senden

Hallo Leute,

ich möchte per AJAX eine Anfrage an den Server senden und per PHP sollte das Script ein XML Dokument erhalten - das ist eigentlich nicht das Problem. Problematisch wirds erst, wenn dieses Dokument nicht erzeugt werden soll.

Sprich - ich will nix auf die Festplatte schreiben.

Gibt es eine Möglichkeit, dass PHP direkt ein XML File an den Browser zurücksendet - ich stells mir grad schwer vor mit einem Echo soetwas zu machen ...

... hmm wie ich das hier schreib hört sich das immer mehr unmöglich für mich an.

Ich benutze derzeit:

<script type="text/javascript">
var http = null;
if (window.XMLHttpRequest) {
   http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
   http = new ActiveXObject("Microsoft.XMLHTTP");
}

window.onload = function() {
   if (http != null) {
      http.open("GET", "links.xml", true);

http.onreadystatechange = ausgeben;
      http.send(null);
   }
}

function ausgeben() {
   if (http.readyState == 4) {
      var liste = document.getElementById("Liste");
      var daten = http.responseXML;
      var ergebnisse = daten.getElementsByTagName("link");
      for (var i = 0; i < ergebnisse.length; i++) {
         var name, url;
         var datum = ergebnisse[i];
         for (var j = 0; j < datum.childNodes.length; j++) {
            with (datum.childNodes[j]) {
               if (nodeName == "text") {
                  name = firstChild.nodeValue;
               } else if (nodeName == "url") {
                  url = firstChild.nodeValue;
               }
            }
         }

var li = document.createElement("li");
         var a = document.createElement("a");
         a.setAttribute("href", url);
         var txt = document.createTextNode(name);
         a.appendChild(txt);
         li.appendChild(a);
         liste.appendChild(li);
      }
   }
}
</script>

So hab ich gedacht, wenn ich den Inhalt des XML documents einfach per echo ausgebe wirds was - aber Pustekuchen ;)
Mach ich "var daten = http.responseText;" bekomm ich logischer Weise das echo - aber denn kann ich es ja nich wie DOM ansprechen.

Any ideas?

Thx,
Jurik

  1. Hab soeben eine nette und so logische Lösung gefunden:

    PHP-File:
    <?php
    $xml = '<?xml version="1.0" encoding="UTF-8"?>
    <links>
     <link id="1">
        <text>Mozilla</text>
        <url>http://www.mozilla.com/</url>
     </link>
     <link id="2">
        <text>Microsoft</text>
        <url>http://www.microsoft.com/</url>
     </link>
     <link id="1">
        <text>Opera</text>
        <url>http://www.opera.com/</url>
     </link>
    </links>';

    header('Content-type: text/xml');
    echo $xml;
    ?>

    Hier kommts auf die vorletzte Zeile an :D

    1. Lieber Jurik,

      header('Content-type: text/xml');
      echo $xml;
      ?>

      Hier kommts auf die vorletzte Zeile an :D

      nicht nur. Du solltest auch sicherstellen, dass der String tatsächlich in UTF-8 kodiert ist. Meiner Erfahrung nach ist er das nur, wenn auch Deine PHP-Scriptdatei in UTF-8 kodiert ist. Ansonsten müsstest Du echo utf8_encode($xml) schreiben...

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
      1. Danke Felix :)

        Jo - sie sind alle in UTF-8 - god thanks Zend Studio :)