Forums d'entraide informatique - Les forums de PCW

Version complète : Script pour lire plusieurs articles sur une même page
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Bonjour,
me re-voilà, encore avec un beau script qui ne fonctionne pas
ajax et javascript vont surement me faire avoir des cheveux gris avant l'age.. Confused

Voici la source du script http://www.dhtmlgoodies.com/index.html?w...icArticles
chez eux sa marche bien, je fait tout comme ils disent (enfin je pense, c'est en anglais..)
mais alors chez moi en local, pas moyen..

Le lien du fichier à telecharger que j'ai un peu modifier en local:
http://www.mediafire.com/?jxbxwulggj1

ce coup si j'ai vérifier que les lignes de codes était bien fermées par le ;
je me demande si sa viendrait pas de l'organisation des fichiers et dossiers..

Vous avez une idée messieurs les javascripteurs!? (euses) on va dire que je suis macho sinon :lol:
C'est à peu près normal...

En fait beaucoup de serveurs bloquent les requêtes POST sur les fichiers en .html pour des raisons de sécurité.

Ainsi en testant ton code en ligne j'ai eu droit à un Statut : 405 Method Not Allowed.

En local c'est normal que ca ne marche pas, car tu lis des fichiers sur le disque donc il n'y a pas de header HTTP renvoyé, donc ton script trouve pas son header 200 et considère que ça a planté.

Donc pour que ton script fonctionne en ligne, remplace :

function getAjaxFile(fileName)
{
ajax.requestFile = fileName; // Specifying which file to get
ajax.onCompletion = showContent; // Specify function that will be executed after file has been found
ajax.onLoading = showWaitMessage; // Action when AJAX is loading the file
ajax.runAJAX(); // Execute AJAX function
}



Par ca :

function getAjaxFile(fileName)
{
ajax.method = "GET";
ajax.requestFile = fileName; // Specifying which file to get
ajax.onCompletion = showContent; // Specify function that will be executed after file has been found
ajax.onLoading = showWaitMessage; // Action when AJAX is loading the file
ajax.runAJAX(); // Execute AJAX function
}



Dans ton fichier index.html


Attention, ça ne fonctionnera toujours pas en local ! Wink Pour ça il faudrait dire au script d'accepter le statut HTTP 0 en plus du 200 (tout à fait faisable).

Figure toi que je viens d'éssayer de le mettre en ligne (enfin sur wamp) avant de voir ton message et que j'ai été étonné de le voir fonctionner parfaitement. j'ai compris qu'il avait besoin du protocole http pour fonctionner Smile

bisare que chez toi sa ne fonctionnait pas,
Si je modifie avec le code que tu m'a donnée sa fonctionnera chez tout le monde?

le faire fonctionner en local c'est juste modifier deux trois lettres ou plusieurs ligne de code?
si ce n'est pas trop grand je veux bien la solution car je préfère tout faire en local avant de l'integrer à une page web.

Merci troll Wink
Salut,

Boah le plus simple c'est tu le mets en ligne et tu demande après qu'on regarde si nous ca marche, généralement si il marche pr toi en ligne il marche chez bcp de monde
oui c'est pour ça je me demande pourquoi troll à eu le droit à un Statut : 405 Method Not Allowed.

en tout cas je suis content que sa marche sa rend trop bien
sheitan a écrit :oui c'est pour ça je me demande pourquoi troll à eu le droit à un Statut : 405 Method Not Allowed.

en tout cas je suis content que sa marche sa rend trop bien


Ca vient des serveurs, toi tu fais le hit sur wamp, il doit accepter les méthodes POST sur les .html, mais visiblement pas les deux serveurs sur lesquels moi j'ai testé Smile


Pour que ça fonctionne en local chez moi le code HTTP Header renvoyé est 0 étant donné qu'il n'y en a pas, donc tu vas dans le fichier ajax.js et là où il y a :



if(self.responseStatus[0] == 200) {



Tu mets à la place :



if(self.responseStatus[0] == 200 || self.responseStatus[0] == 0) {



Mais bon c'est pas trop conseillé, car si un jour y'a un bug et qu'il recoit pas de header HTTP il exécutera quand même la fonction même si y'a pas eu de réponse...

Note : je n'ai plus le code sous les yeux là, j'ai écrit "self.responseStatus[0]" de tête, ça ressemble à ça mais c'est sans doute pas exactement ça, regarde dans ton fichier).

Oki merci troll, j'ai mis comme ça.

	if (self.responseStatus[0] == "200" || self.responseStatus[0] == "0") 
{self.onCompletion();}
else
{self.onError();}



merci pour tout ces conseils & explications Wink

Ah donc c'était bien "responseStatus" ?

De tête suis trop fort 8)


Bon bah sujet mis en résolu
Troll a écrit :Ah donc c'était bien "responseStatus" ?
De tête suis trop fort 8)

Ouaip, je confirme Image: applause-2-1--1a5e.gif
tu avait juste oublié les guillemets mais sa se trouve sa fonctionne très bien sans.
Troll a écrit :Bon bah sujet mis en résolu

J'ai voulu le faire mais il veux pas m'obéir le forum Confused
Nan les guillemets il ne faut pas les mettre.

Car le statut HTTP est un nombre entier (int) et non une chaine de caractères (string).

Bizarre pour le forum par contre... O_o
Pages : 1 2
URLs de référence