2009-09-28 12 views
0

J'utilise AJAX pour recevoir une réponse XML, que je dois ensuite manipuler. En utilisant l'option de contexte de jQuery, je peux sélectionner parmi les données XML, mais je suis toujours incapable d'écrire dessus.Manipulation d'une variable contenant XML avec jQuery?

$('blah', xml) 

xml sélectionne très bien, mais

$('blah', xml).removeClass('myClass') 

semble ne rien faire à la variable xml! Comment puis-je obtenir la fonctionnalité que je recherche?

Exemple:

var data = null; 

$(document).ready(function(){ 
$.ajax({ 
    type:"GET", 
    url:"blah/blah.jsp", 
    success:function(msg) 
    { 
     data = msg; 
     init(); 
    } 
}); 

function init() 
{ 
    $('#myElement', data).removeClass('hidden');//removeAttr('class') also fails 
} 

Exemple de fichier xml:

<root> 
<div> 
<!--lots of content --> 
</div> 
<div> 
<p id = "myElement<->" class = "hidden"> 
    Test! 
</p> 
</div> 
</root> 
+0

Peut-on voir le fichier XML? –

+0

addClass/removeClass sont spécifiques au HTML, ils modifient l'attribut nommé class. Pouvez-vous nous dire si removeAttr fonctionne? –

+0

removeAttr ne fonctionne pas. –

Répondre

1

Cela fonctionne pour moi.

<html> 
<head> 
    <title>Test Page</title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(function() 
    { 
    var data = null; 
    $.ajax({ 
     type:"GET", 
     url:"sample.xml", 
     dataType: 'xml', 
     success:function(msg) 
     { 
      init($(msg)); 
     } 
    }); 

    function init($xml) 
    { 
     var $myElement = $xml.find('#myElement'); 
     $myElement.removeAttr('class'); 
     console.log($myElement); 
    } 
    }); 
    </script> 
</head> 

<body> 

</body> 
</html> 

Et voici sample.xml

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
<div> 

</div> 
<div> 
<p id = "myElement" class = "hidden"> 
    Test! 
</p> 
</div> 
</root> 

alors assurez-vous que vous demandez avec "xml" l'option dataType, et que votre page JSP retourne le contenu avec l'en-tête correct Content-Type (text/xml)

+0

* clique de manière répétée sur le bouton "Voter", en espérant que ce dernier atteigne 100. * Type de contenu sur un en-tête de réponse jsp. Quel bug subtil. –

+0

Soyez également conscient de la possibilité de devoir utiliser msg.d au lieu de simplement msg. http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/ – Maslow