Souci pour exécuter fonction ajax au chargement de la page - PHP - Programmation
Marsh Posté le 15-11-2015 à 12:09:13
Je mettrais le javascript dans un fichier .js déjà, chargé via une balise <script > dans le <head>. Puis, j'appellerai initi() sur l'événement onload de <body>. Ca serait beaucoup plus propre et mieux structuré
Rappel : le javascript doit être non intrusif dans le html.
Marsh Posté le 16-11-2015 à 10:01:11
Merci beaucoup rufo.
Cela fonctionne.
Mais il reste un petit souci.
Quand j'exécute une première fois, aucun problème.
Par contre, quand je reviens en arrière et que je veux relancer la fonction, cela ne fonctionne plus!
Pq? Faut-il attendre un certain temps pour qu'elle puisse se relancer? Il y aura qq en cache qui empêche de la relancer?
Comment peut-on contourner ce problème?
Merci d'avance
Marsh Posté le 16-11-2015 à 10:21:42
La fonction "page précédente" pose souvent problème aux applis web. Il faut que tu la gères du coup dans ton script.
Regarde ces solutions :
http://stackoverflow.com/questions [...] ss-browser
http://stackoverflow.com/questions [...] ery-mobile
http://stackoverflow.com/questions [...] in-browser
Marsh Posté le 16-11-2015 à 10:33:14
Non non. Je me suis mal expliqué.
Si je suis sur ma page A, j'ai un lien qui me mène vers ma page B.
C'est quand j'arrive sur cette page B que ma fonction doit se lancer.
Le soucis est quand je reviens sur la page A et que je reclique sur mon lien pour arriver sur la page B que la fonction ne se lance plus.
PS: la fonction créée une page pdf et l'enregistre sur le serveur (avec html2pdf)
une idée?
En effet, je ne sais pas si le problème vient de la fonction ajax ou de la création du pdf (mais j'en doute pour cette 2ème idée)
Marsh Posté le 16-11-2015 à 10:39:16
Je pense que c'est parce que ta page php a été mise en cache et du coup, le traitement est pas relancé côté serveur...
Marsh Posté le 16-11-2015 à 10:45:04
Ok. Et il y a moyen de vider automatiquement ce cache pour contourner le problème?
Ici, c'est en cache côté serveur c'est bien ça?
Marsh Posté le 16-11-2015 à 11:39:00
Moi, sur mes applis web, je mets dans mon fichier Config.php, appelé en tout début de mes pages php, les 2 lignes suivantes :
header('Pragma: no-cache');
header('Cache-Control: no-cache');
Marsh Posté le 16-11-2015 à 14:47:45
Cela ne change rien malheureusement.
Je n'y avais plus touché depuis qq heures.
J'ai ajouté les header directement dans la page puis seulement j'ai testé.
La première fois, ça fonctionne nickel puis plus rien...
Une autre idée? Le problème viendrait bien du cache alors?
Marsh Posté le 16-11-2015 à 15:11:54
Je viens de retester en accédant directement à page ajax et en mettant les données en GET dans l'url.
Aucun problème, je peux lui envoyer plein de fois, le traitement se fait à chaque fois.
C'est donc ma fonction init() dans le body onload qui n'est pas lancée à chaque fois.
Actuellement j'ai donc ma page A avec:
en tout premier dans ma page:
Code :
|
Dans le head:
Code :
|
Le body onload:
Code :
|
Séparément j'ai ma page pdf_tva_ajax.js:
Code :
|
Il y aurait une erreur là-dedans?
Merci encore
Marsh Posté le 18-11-2015 à 23:15:53
bingojm a écrit : Je viens de retester en accédant directement à page ajax et en mettant les données en GET dans l'url.
|
ALors perso je ferais :
1) dans ton pdf_tva_ajax.js, j'y rajouterais
Code :
|
A priori, tu écris en PHP le lien vers id_client, que tu as déjà dans l'url. En js, tu peux récuperer les parametres d'url avec location.query (il faut un peu parser le tout, mais rien de complexe). C'est plus propre que de mélanger le PHP et le JS (déjà dit plus haut d'ailleurs).
2) Je ne sais pas si c'est voulu, mais ton param dans init ne sert à rien puisque il est sous forme de chaine.
Code :
|
D'ailleurs en suivant l'idée plus haut, ca donnerait (avec une fonction trouvée sur StackOverflow pour choper le param de son choix dans l'url) :
Code :
|
3) Utilise Firebug ou les outils de dev integrés à ton navigateur (F12) pour voir ce qui transite entre ce dernier et ton serveur.
Bonne chance
Marsh Posté le 14-11-2015 à 14:32:42
Bonjour à tous,
J'ai un petit souci...
Je commence à me débrouiller avec ajax, mais voici mon problème:
J'ai une page php toute simple qui affiche certaines infos; pas de souci jusque là.
En fin de document, j'ai ajouté une simple petite fonction ajax pour qu'un pdf s'enregistre sur le serveur.
Mon problème est que cette fonction ne se lance pas quand j'arrive sur ma page php.
Par contre, quand je rafraîchis cette page php (avec F5 par ex), la fonction se lance très bien!
Pourquoi ne se lance-t-elle pas quand j'arrive sur la page php?
Pourquoi Est-ce que je dois rafraichir cette page pour que la fonction se lance?
Au début de ma page php, je récupère la valeur GET que j'ai envoyée.
Vers la fin de ma page php, j'exécute ma fonction ajax.
Merci d'avance pour votre aide