2009-11-17 5 views
0

Je fais quelque chose de très simple, et pourtant ça ne marche pas .. peut-être qu'il me manque quelque chose.Fichier lu dans div par ajax. Il me manque quelque chose de petit je pense

J'ai besoin de lire un fichier texte, par ajax, et dans un div. Je peux facilement écrire dans le fichier via ajax, mais pas lu. Voici ce que j'ai:

function ajaxLoader(url) { 
    if(document.getElementById) { 
    var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 
    } 
    if(x) { 
    x.onreadystatechange = function() { 
     if(x.readyState == 4 && x.status == 200) { 
     el = document.getElementById('content'); 
     el.innerHTML = x.responseText; 
     } 
    } 

    x.open("GET",url, true); 
    x.send(null); 
    } 
} 

<a class="blocklink" href="#" id="readg" onclick="ajaxLoader('guestBook.txt')">Read The Guestbook</a></p> 

<div id="content" style="width:600px;"> 

J'ai été bloqué dessus toute la journée. Je peux utiliser tout le même code, et produire un fichier html normal à la div, mais pas ce fichier .txt. Le fichier txt possède tous les privilèges d'écriture en lecture dont il a besoin. Merci!

Marcus

Répondre

0

Essayez de supprimer cette if(document.getElementById)

Pouvez-vous alerter votre propriété .responseText? Cela fonctionne en utilisant un modèle synchrone?

+0

il semble passer par les instructions if. Quand j'alerte x.responsetype, je n'ai rien ... c'est vide ... Je ne suis pas bon avec ajax, donc je ne sais pas de quoi il s'agit. Pas sûr non plus sur le modèle synchrone. Des idées? – Marcus

0

Votre fonction ajaxLoader doit renvoyer false afin que le lien sur lequel vous avez cliqué ne soit pas suivi.

+0

Cela n'aide pas, sauf si vous renvoyez également le résultat de la fonction dans l'événement click. – Guffa

0

Si vous utilisez le code local, vous obtiendrez le statut 0 au lieu de l'état 200. Pour gérer à la fois, vous pouvez utiliser:

if (x.readyState == 4 && (x.status == 0 || x.status == 200)) 

En outre, lorsque vous cliquez sur le lien, le lien sera suivi comme vous ne l'avez pas annulé. Comme le href est "#", il ira en haut de la même page, mais cela peut toujours causer des problèmes. (Un effet secondaire est que la page défile vers le haut lorsque vous appuyez sur le lien.) Annuler le lien d'être suivi par un retour faux de l'événement click:

onclick="ajaxLoader('guestBook.txt');return false;" 
+0

bien, donc j'ai ajouté le retour faux, et cela ne fonctionne toujours pas. Des idées? – Marcus

+0

aussi, j'ai jeté une alerte dans ce readystate et il frappe – Marcus

0

figured it out .. Je ne nettoyaient le cache ... le CACHE gagne à nouveau!

Questions connexes