2009-09-05 9 views
2

Avant que quelqu'un dise que je n'ai pas lu, je peux dire que j'ai lu presque tout ce qui est lié à ma question. Mais je n'ai pas trouvé ma réponse. Donc, j'ai un simple script AJAX qui charge mon fichier externe à l'intérieur de div prédéfini. Voici le code de ces scripts:AJAX document.getElementById(). Problème innerHTML avec IE?

function loadTwitter() 
    { 
    var xmlHttp; 
    try 
    { 
    // Firefox, Opera 8.0+, Safari 
    xmlHttp=new XMLHttpRequest(); 
    } 
    catch (e) 
    { 
    // Internet Explorer 
    try 
     { 
     xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
    catch (e) 
     { 
     try 
     { 
     xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     catch (e) 
     { 
     alert("Your Browser Don't Support AJAX!"); 
     return false; 
     } 
     } 
    } 
    xmlHttp.onreadystatechange=function() 
     { 
     if(xmlHttp.readyState==4) 
     { 
     document.getElementById("column_twitter").innerHTML=xmlHttp.responseText; 
     } 
     } 
    xmlHttp.open("GET","../includes/home/twitter.php",true); 
    xmlHttp.send(null); 
    } 

Il fonctionne très bien dans le navigateur tout le monde que je test (FF, Opera, Chrome, Safari), mais à l'intérieur IE7 ne veux pas injecter mon fichier php externe dans prédéfini div. Il reste toujours le texte par défaut que je wright l'intérieur div ... Et je pense que le problème est dans cette ligne:

document.getElementById("column_twitter").innerHTML=xmlHttp.responseText; 

Ainsi, toute suggestion comment résoudre ce problème pour IE (7 et plus)?

+1

Suppression de Downvote. Cette question a été rejetée, pourquoi? Sérieusement, pourquoi? – karim79

+0

Je ne pense pas avoir jamais vu ce genre d'indentation avant, jusqu'à maintenant. –

+0

Probablement parce que mon horrible anglais :)) Non, sérieusement, mes questions sont simples et peut-être même stupides pour la plupart des spécialistes. Et je suis désolé pour cela ... – Spoonk

Répondre

6

Je pense que vous feriez mieux d'utiliser un framework javascript tel que jQuery qui vous permet de vous concentrer sur l'implémentation de vos fonctionnalités plutôt que sur la compatibilité du navigateur et les interactions réseau de bas niveau. En utilisant jQuery vous pouvez simplement faire:

<script type="text/javascript" 
     src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"> 
</script> 
<script type="text/javascript"> 

$.get('../includes/home/twitter.php', function(data) { 
    $('#column_twitter').html(data); 
}); 

</script> 
+2

+ 1, encore plus court serait $ ('# column_twitter'). Load ('../ includes/home/twitter.php'); – karim79

+0

Merci, EXACTEMENT ce dont j'avais besoin! Propre et simple! Merci beaucoup!!! – Spoonk

+1

@ karim79 - ouais, c'est nettement plus court. Cependant, je n'utilise presque jamais de charge car, en général, je transmets des données ou je veux faire quelque chose de plus compliqué après avoir obtenu les données. – tvanfosson

1

Je sais que c'est une vieille question, mais je suis tombé sur une chose semblable aujourd'hui et je voulais le poster pour d'autres au cas où vous rencontrez ce problème. Cela est probablement dû au fait que votre balise "column_twitter" est incorporée dans plusieurs instructions DIV ou dans une table. IE7 n'aime pas ça pour une raison quelconque.

Bonne chance!