2010-04-13 6 views
4

Désolé si cela a été posté plusieurs fois. Mais j'ai essayé beaucoup de variantes et ça ne marche toujours pas. Le code HTML revient de l'amende d'appel AJAX jquery et je suis en train de supprimer l'en-tête et pieds de page de la réponse à l'aide:comment analyser jquery ajax xhtml réponse?

// none of these work for me 
$("#content", data); 
$("#content", $(data)); 
$(data).find("#content").html() 

J'ai point d'arrêt de la réponse de vérifier l'#content existe par $ inspectés (données) et en utilisant l'alerte pour imprimer le texte des données. J'ai aussi essayé d'utiliser "body" ou "a" comme sélecteurs, mais ça revient toujours indéfini.

J'ai lu dans cet article que vous ne pouvez pas extraire le document XHTML complet: jquery ajax parse response text. Mais je ne trouve plus la citation de la réponse, peut-être est-elle dépassée?

Est-ce que quelqu'un a rencontré ce problème?

Un grand merci, Steve

Répondre

4

cela fonctionne pour moi:

$(data).filter("#content"); 
1

Les données que vous recevez de votre appel AJAX ne fait pas partie de votre arbre DOM, de sorte que vous ne pouvez pas utiliser des appels de fonctions JQuery pour le manipuler. Vous pouvez utiliser des fonctions de manipulation de texte, vous pouvez utiliser JSON, ou vous pouvez également joindre votre réponse à votre DOM.

2

Vous avez besoin d'un div pour joindre vos données. Comme $("#response").replaceWith($(data).find('#content')); Cela devrait fonctionner

0

Utilisez-vous la méthode get? Vous pouvez également utiliser la méthode de chargement jQuery dans laquelle vous pouvez fournir un fragment de page à charger.

Par exemple, pour charger un contenu div d'un wellformed html document que vous pouvez utiliser

$ ("# div-à-charge à"). Charge ("html-to-doc-charge à partir. html #content ", function() { // faire quelque chose });

2

Fonctionne lorsqu'il y a une étiquette <div> dans le document reçu.

E.g. <body><div> your content </div></body>.

Voir un très simple proof of concept.

0

Vous devez garantir que votre dom HTML était bien formaté.

Essayez le plus simple HTML

<html> 
<head> 
<title>title here</title> 
</head> 
<body> 
<div> 
    <div>hello</div> 
     <span id="s">span content</span> 
    </div> 
</body>