3 Stimmen

jQuery konvertiert XML-Tags in Großbuchstaben

Ich habe eine AJAX-Anforderungen, die eine Zeichenfolge von XML zurückgibt, die ich in das DOM injizieren möchte. Meine Funktion sieht so aus

  $.ajax({
    type: 'POST',
    url: "myrequest",
    data: postdata,
    datatype: 'json',
    success: function (arguments) {
        newxmlstring = arguments.newxml;
        oldnode = $("someselector specified in the arguments passed");
        oldnode.replaceWith(newxmlstring);
    }
  });

Dies funktioniert, aber es scheint, dass die Funktion replaceWith alle nodeName in großgeschriebene Versionen der vom Server gesendeten Antwort. Ich nehme an, dies ist einige Macke mit dem Versuch, jQuery verwenden, um XML zu behandeln?

Wenn die Antwortzeichenfolge also zum Beispiel lautet <data>asdf</data> wenn ich auf $(newnode)[0].nodeName Ich bekomme 'DATA' .

Weiß jemand, wie man das neue XML unter Beibehaltung der nodeName in Kleinbuchstaben?

EDIT: Meine Antwort ist JSON, da sie die neue Xml-Zeichenfolge und ein paar andere Daten darüber enthält, wo der neue Xml-Knoten angehängt werden soll. Ich würde es also vorziehen, die datatype: 'json' wenn dies möglich ist.

2voto

cfeduke Punkte 22720

Aus dieser Antwort :

In XML (und XML-basierten Sprachen wie wie XHTML) wird bei tagName die Groß- und Kleinschreibung beibehalten. In HTML gibt tagName den Elementnamen in der kanonischen Großbuchstabenform zurück. Der Wert von tagName ist der gleiche wie der von von nodeName.

Ein bisschen suchen zeigt, dass eine Menge Leute dieses Problem, vor allem mit Selektoren und XML (jQuery's find() ist Groß-und Kleinschreibung und Selektoren in find() verwendet werden kleingeschrieben) erleben.

Hier ist eine Funktion die jemand anderes verwendet, um eine Zeichenkette in XML zu konvertieren, die auch für Sie funktionieren könnte:

$.text2xml = function(sXML) { 
    // NOTE: I'd like to use jQuery for this, but jQuery makes all 
    // tags uppercase 
    //return $(xml)[0]; 
    var out; 
    try{ 
        var dXML = ($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser(); 
        dXML.async = false; 
    }catch(e){ throw new Error("XML Parser could not be instantiated"); }; 
    try{ 
        if($.browser.msie) out = (dXML.loadXML(sXML))?dXML:false; 
        else out = dXML.parseFromString(sXML, "text/xml"); 
    } 
    catch(e){ throw new Error("Error parsing XML string"); }; 
    return out;
}

0voto

Ben Regenspan Punkte 9348

Versuchen Sie es mit:

datatype: 'xml',

anstelle von "json", da Sie eine XML-Antwort abrufen. Die Einstellung des Datentyps führt dazu, dass sie ordnungsgemäß als XML geparst wird.

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