3 Stimmen

wie man Xml-Daten in Javascript verarbeitet

Ich bin ein Neuling in Javascript xml Datenverarbeitung. Derzeit, meine Ajax-Aufruf an einen Server, und der Server gibt xml Daten, ich weiß nicht, wie ich die Xml-Daten analysieren kann, um einige Werte zu erhalten.

Mein Ajax-Aufruf:

$.ajax({
            url: 'http://localhost:8080/someinterface/the-id',
            type: 'GET',
            async: false,
            dataType: 'application/xml',
            data: {id: 43},
            success: function(data) {

                //handle the data

            },
            error: function(xhr, status, error){
                alert('error happens');
            }
         })

die zurückgegebenen xml Die Daten sehen wie folgt aus:

<DOCUMENT>
  <AGE>16</AGE>
  <USERNAME>default user</USERNAME>
  <SECURITYID>1111</SECURITYID>
...

Wie kann ich die Xml-Daten parsen, um zum Beispiel "USERNAME" in meinem Javascript zu erhalten?

------------EDIT------------

Ich habe versucht, den von Ihnen vorgeschlagenen Weg zu gehen, aber jetzt bekomme ich eine Fehlermeldung:

XML-Parsing-Fehler: kein Element gefunden Ort: moz-nullprincipal:{120e8c1d-5174-4e94-9ebb-2bffda80b170} Zeile Nummer 1, Spalte 1: ^

und das Ergebnis des Ajax-Aufrufs an die Fehlerfunktion

------------------- TEILWEISE GELÖST ------------------------

Schließlich habe ich herausgefunden, dass der Grund dafür ist, dass meine Anwendung auf einem Jetty-Server auf localhost läuft: 8080 während mein Ajax xml-Daten auf dem Tomcat-Server anfordert, der auf localhost ausgeführt wird: 8085 . Wegen der Domäne Port unterschiedlich sind, habe ich das Problem verwirrt. Nun, nachdem ich meine Anwendung auf den Tomcat-Server verschoben und den Tomcat-Server angefordert habe, habe ich die XML-Antwort erfolgreich erhalten.

Der Ajax-Aufruf geht an die Erfolgsfunktion, und ich verwende

success: function(data){
           xmlDoc = $.parseXML(data);
            $xml = $(xmlDoc);
            $userName = $xml.find('USERNAME');  
            var userName = $userName.text();
            alert('1');
            alert(userName);
}

Ich habe alert('1') in meinem Browser, BUT Ich bekomme keine Meldung (Benutzername), ich weiß nicht warum... Also habe ich hier "TEILWEISE GELÖST", also... warum ich meinen Benutzernamen nicht angezeigt bekomme...

3voto

Amitabh Punkte 54879

Sie können das jquery xml parsing verwenden.

http://api.jquery.com/jQuery.parseXML/

Also in Ihrer Funktion Erfolg.

success: function(data) {
    //xmlDoc = $.parseXML( data);
    $xml = $( data);
    $userName = $xml.find('USERNAME');  
    var uName = $userName.text();
}

1voto

Pointy Punkte 387467

Der Browser erledigt das im Grunde für Sie:

success: function(data) {
  var username = $(data).find('username').text();
  // ...
}

1voto

Álvaro González Punkte 134708

Sie missbrauchen die dataType Parameter. Es wird nicht erwartet, dass er ein MIME-Typ ist. Stattdessen sollte es einer der folgenden sein: "xml", "html", "script", "json", "jsonp" oder "text". In Ihrem Fall "xml" (oder lassen Sie ihn ganz weg und jQuery wird ihn für Sie erraten):

Aktualisierung:

Bis jetzt sieht es so aus, als ob Ihr Problem darin besteht, dass Ihr serverseitiges Skript abstürzt und Sie nicht einmal gültiges XML haben. Wie auch immer, ich habe ein kleines Beispiel zusammengestellt, falls es hilft:

$.ajax({
    url: "/test.xml",
    type: "GET",
    async: false,
    dataType: "xml",
    data: {id: 43},
    success: function(data) {
        var output = "Usernames:\n";
        $(data).find("USERNAME").each(function(){
            output += "\n- " + $(this).text();
        });
        alert(output);
    },
    error: function(xhr, status, error){
        alert("error happens");
    }
})

0voto

Niklas Wulff Punkte 3427

Verwenden Sie stattdessen den Datentyp Json, der für die Verwendung mit Javascript konzipiert ist.

$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});

0voto

StuperUser Punkte 10141

Verwenden Sie das folgende Snippet in Ihrer Funktion, um die XML-Ergebniszeichenkette in ein umschlossenes jQuery-Set zu setzen.

var xmlString = data;

//IE XML parser needs to use an ActiveXObject
if ($.browser.msie) {
    unwrappedXml = new ActiveXObject("Microsoft.XMLDOM");
    unwrappedXml.async = false;
    unwrappedXml.loadXML(xmlString);
    }
else {
    unwrappedXml = xmlString;
}

var xml = $(unwrappedXml);
xml.find(selector);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X