Bonjour,
Je suis en train de concevoir un theme full ajax avec wordpress, dans le but de tester le référencement ajax.
Sur mon thème, toutes les URLs sont de la forme " http://nomdedomaine.com/#!/truc_a_charger/"
Avec une petite requête ajax en jQuery, je souhaite charger la page "http://nomdedomaine.com/truc\_a\_charger", trouver les éléments qui m’intéresse et les remplacer dans ma page (avec des animations et tout le tintouin...).
Et c'est là que j'ai un souci : en utilisant la fonction $.load , pas de problème j'arrive a charger ce que je veux ; mais en utilisant une fonction plus classique $.ajax , je n'arrive pas à trouver les éléments qui sont e n dehors de la boucle Wordpress.
Curieux comportement n'est ce pas ?
Voici mon code qui marche (mais qui ne me satisfait pas) :
var link='http://ajax.wuiwui.net/page_a_charger';
$('#contenu').load(link + ' #contenu');
Et voici le code qui devrait marcher(mais qui ne marche pas):
$.ajax({
url: link,
processData: true,
success: function(data){
data = innerShiv(data,false); //j'utilise innerShiv pour rendre IE compatible avec html5
console.log(data); // là j'ai bien les données de ma page complète
var truc = $(data).find('#contenu'); //là si je met article(qui est généré dans la boucle) à la place de #contenu, les données sont chargés sans soucis
$('#contenu').html(truc.html()); //et là ça charge rien
}
});
J'ai vraiment besoin d'utiliser la seconde méthode, pour pouvoir trouver/insérer plusieurs éléments de la page cible, à différents endroits de la page en cours.
Le système doit être facilement adaptable et donc je pense qu'utilise la page " WP_ajax" fournie par Wordpress n'est pas la meilleure solution.
Et enfin je suis sur que ce code marche car je l'utilise sur un thème CMS made simple et je n'ai jamais eu de problème (http://denis.wuiwui.net).
Le lieu du crime : http://ajax.wuiwui.net
J'ai hésité à mettre ce sujet dans la catégorie Wordpress car je ne sais pas d'où viens le souci.
Quelqu'un a-t'il une idée de comment je pourrai solutionner ça ?
Merci !!
Sujet résolu !!
Donc il s'agissait bien d'un bug de jQuery lui-même. En fait le script revenait à faire :
$('<section id="lol"></section>').find('#lol');
Ce qui ne fonctionne pas (jquery ne peux pas trouver un élément qu'il a sous les yeux).
En faisant :
$('<div><section id="lol"></section></div>').find('#lol');
...ça marche.
J'ai donc rajouté une div global dans mon body, ce qui a solutionné le problème.