jQuery .find() sur les données .ajax() l'appel est de retour “[object object]” au lieu de div
Essayer de trouver div
élément avec id="result"
retournés dans les données de .ajax()
à l'aide de .find()
. Malheureusement, alert(result)
ne retourne pas div#result
.
Voici mon code:
$.ajax({
url: url,
cache: false,
success: function(response) {
result = $(response).find("#result");
alert(response); //works as expected (returns all html)
alert(result); //returns [object Object]
}
});
- la réponse de venir à l'endroit de poing:
alert(response)
? - Je ne sais pas comment corriger votre code dans la façon dont vous l'avez fait, mais je pense que cela fonctionnera si vous mettez d'abord le contenu à l'intérieur d'une balise div avec display none et ensuite trouver le #résultat de la balise à l'intérieur de ce div. Aime: $('#div-content').html(result); $('#div-content').find('#result');
Vous devez vous connecter pour publier un commentaire.
Pour répondre à votre question plus précisément, il semble fonctionner correctement. Vous avez dit qu'il retourne
[object Object]
, qui est ce que jQuery sera de retour avec lafind("#result")
méthode. Elle retourne un jQuery élément qui correspond à lafind
requête.Essayer d'obtenir un attribut de l'objet, comme
result.attr("id")
- il doit retournerresult
.En général, cette réponse dépend de si oui ou non
#result
est l'élément de niveau supérieur.Si
#result
est l'élément de niveau supérieur,find()
ne fonctionnera pas. Au lieu de cela, utiliserfilter()
:Si
#result
n'est pas l'élément de niveau supérieur,find()
fonctionne:Je viens de passer 3 heures pour résoudre un problème similaire. C'est ce qui a fonctionné pour moi.
L'élément que j'essayais de le récupérer à partir de mon
$.get
réponse a été un premier élément enfant de la balise body. Pour une raison quelconque, quand j'ai enroulé un div autour de cet élément, il est devenu accessibles par$(response).find('#nameofelement')
.Aucune idée de pourquoi, mais oui, récupérable élément ne peut pas être le premier enfant de son corps... qui pourrait être utile à quelqu'un 🙂
essayez ceci:
btw
alert
est rude pour corriger les choses, essayez deconsole.log
c'est votre réponse:
La suite de jQuery ne fonctionne pas:
que les divs sont top au niveau des éléments et des données n'est pas un élément, mais une chaîne de caractères, pour le faire fonctionner, vous devez utiliser .filtre
Une autre question:
Utilisation des Sélecteurs Jquery sur $.AJAX HTML chargé?
.find()
vous donne de trop ou de mauvais résultats.ne pas oublier de le faire avec parse html. comme:
a travailler 🙂
Le jQuery find() retourne un objet jQuery qui encapsule l'objet DOM. Vous devriez être en mesure de travailler avec l'objet pour en faire ce que vous voulez avec la div.
Cela a fonctionné pour moi, vous le besoin juste de mettre des .html() à la fin - $(réponse).find("#resultat")
Vous pouvez le faire de cette façon pour trouver toutes les div et obtenir ses attributs ou tout ce que vous voulez.
ou
Le truc, c'est que votre ajax réponse est de retour une chaîne, donc si vous utilisez directement $(réponse) il serait de retour JQUERY: Uncaught Error: syntax error, non reconnu expression dans la console. Pour l'utiliser correctement, vous devez avoir à utiliser d'abord un JQUERY intégré dans la fonction appelée $.parseHTML(réponse). Comme quoi le nom de la fonction implique que vous avez besoin pour analyser la chaîne d'abord comme un objet html. Tout comme dans votre cas:
Est
#result
dans la réponse de l'HTML? Essayez les solutions suivantes. jQuery sera toujours retourner un objet vide si ce n'est pas de trouver quoi que ce soit.Vous devez ajouter
dataType: "html"
à la demande. Im assez sûr que vous ne serez pas en mesure de rechercher le DOM du code html renvoyé s'il ne sait pas c'est du html.Spécifier
dataType: "html"
.Si vous n'avez pas jQuery deviner les données demandées type (case: http://api.jquery.com/jQuery.ajax/). Ma conjecture est que, dans votre cas
response
était unString
plutôt qu'unDOMObject
. Évidemment, les méthodes du DOM ne fonctionne pas sur une Chaîne.Vous tester avec
console.log("type of response: " + typeof response)
(oualert("type of response:" + typeof response)
, dans le cas où vous ne courez pas Firebug)si votre appel ajax retourne un tableau JSON, chaîne JSON à partir du côté serveur,
ensuite, vous devriez commencer à faire la suivante:
Analyser votre objet JSON dans un JS objet(variable) et puis vous pouvez utiliser l'index des données pour récupérer les données!
Espérons que cela pourrait être utile à certains d'entre vous les gars! 🙂
vous suffit d'utiliser le code suivant
essayer
if( $(réponse).filter('#result').la longueur )
//faire quelque chose
Pour afficher le contenu d'alerte utilisation:
alert( $(response).find("#result").html() );
Vous pourriez avoir à faire quelque chose comme
alors vous devriez être en mesure d'utiliser