2009-10-02 6 views
1

J'essaie de tirer le contenu de Div à partir d'une autre page du site sur lequel je travaille et mettre à jour la Div sur la page actuelle. Je veux faire cela, donc je n'ai pas besoin d'un rechargement de page. L'appel Ajax que je fais fonctionne bien dans Firefox, il met à jour la Div avec le contenu de l'autre page du site. Le problème est qu'il casse dans IE, quand j'essaye d'obtenir le HTML des données renvoyées using .html() je obtiens null dans IE. Si je fais une alerte juste sur les données renvoyées, le code HTML apparaît.jQuery Ajax chargement du contenu d'une autre page du site

var divItems = $("#tab-bbp a").attr("href"); 
$.ajax({ 
    type: "GET", 
    url: divItems, 
    dataType: "html", 
    success: function(msg){ 
     $("#persistenslcont").html($("#persistenslcont",msg).html()); 
     //null in IE, returns HTML in FF 
     alert($("#persistenslcont",msg).html()); 
    }, 
    error: function() { 
     alert("error"); 
}     
}); 

Il semble étrange que cela ne fonctionne pas dans IE. En outre, je ne suis pas sûr si c'est la meilleure technique pour faire ce que j'essaie d'accomplir. Toute aide serait appréciée.

Modifier

Quand j'ai essayé la fonction .load je encore rencontré des problèmes avec IE ci-dessous est le code commenté. J'ai de nombreuses alertes pour essayer de comprendre quel est le problème. Il semble que # 2 devrait fonctionner mais dans IE renvoie null.

Est-il possible de manipuler l'objet objet ou de voir ce qu'il contient?

var divItems = $("#tab-bbp a").attr("href"); 
$("#persistenslcont").load(slItems + " #persistenslcont", 
            function (data, textStatus, req) { 
             //returns HTML code in the alert in IE & FF 
             alert("test 1" + req.responseText); 

             //returns null in IE - In FF returns proper code 
             alert("test 2" + $("#persistenslcont",req.responseText).html()); 

             //returns [object Object] same in IE & FF 
             alert("test 3" + $("#persistenslcont",data)); 

             //returns [object Object] same in IE & FF 
             var $response = $('<div />').html(data); 
             var $test4 = $response.find('#persistenslcont'); 
             $('#persistenslcont').append($test4); 
             alert("test 4" + $test4); 

             if (textStatus == "error") { 
              alert("error"); 
             } 
            }); 
+0

Quelle version d'IE utilisez-vous? Avez-vous utilisé des outils de développement (par exemple Firebug for FF) pour vérifier les erreurs spécifiques? –

+0

J'utilise Firebug mais aucune erreur n'apparaît dans Firefox, et avec la notification d'erreur JS activée dans IE rien n'apparaît non plus. Cela fonctionne dans FF juste pas dans IE. $ ("# persistenslcont", msg) .html() renvoie null bien que si vous regardez msg (les données retournées) vous obtiendrez le résultat du code HTML. – Westing

Répondre

0

Le problème avec mon appel Ajax dans IE était lié à un <div> ouvert. D'une certaine façon, je n'ai pas vérifié ma structure HTML au début. C'est juste une autre raison pour laquelle la validation HTML est importante!

0

je pense que vous pouvez faire la fonction de réussite plus simple comme ceci:

success: function(msg){ 
    $("#persistenslcont").html(msg); 

    alert($("#persistenslcont").html(msg)); 

}

0

Vous pouvez spécifier quelle partie d'une page demandée que vous voulez dans jquery. J'utiliser la fonction load():

 $("#persistenslcont").load($(divItems + " #divcontent"); 

Je pense que je bâclé votre code, mais l'idée de base est juste et devrait fonctionner dans IE. Fondamentalement, il suffit de pointer la requête ajax à la partie de la page que vous voulez, plutôt que de faire le tour dans le code HTML de la page entière demandée.

+0

Cela a fonctionné dans FF mais hélas il est encore cassé dans IE. Voir ma modification ci-dessus. – Westing

Questions connexes