JS et PHP, round 2 - HTML/CSS - Programmation
Marsh Posté le 07-10-2009 à 19:50:18
essayes un framework js (jquery, mootools etc...), ça fera usine à gaz dans ton cas vu que ça servira que pour ça mais bon ça reste un peu plus simple pour faire une requête en ajax.
sinon mieux, apprends à utiliser XMLHttpRequest (donc AJAX), c'est pas forcement évident mais avec un tuto c'est pas non plus le bout du monde
edit : et j'avais pas vu mais la cat est foireuse, c'est pas du java ton truc
javascript n'a rien à voir avec java, ton post est a mettre là : HTML/CSS/Javascript
Marsh Posté le 07-10-2009 à 20:50:08
Ah ouais, je me suis gourré de rubrique . Je l'ai modifiée
Sinon j'a regardé le XHR, je vois pas où (pas la non ) je pourrais coller ma requete php en fait.
Puis il faut pas réécrire le script JS par la même occasion ?
Marsh Posté le 07-10-2009 à 21:34:40
J'ai regardé les exemples sur le forum des gens qui ont posté leurs problemes :
Est ce que c'est comme ca que l'on fait ; mettre dans le else :
else{
var displaystring="Le compte à rebours est terminé" t
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP" );
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP" );
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets HMLHTTPRequest..." );
xhr = false;
}
return xhr;
}
}
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
xhr.open("POST","script.php",true);
C'est mon premier script ajax
Marsh Posté le 07-10-2009 à 22:57:25
mon premier script ajax qui date de quelques mois :
Code :
|
ici je passe deux paramètres : coclico et campagne vers la page ajax_test_coclico.php par la methode POST.
le contenu de id test_coclico sera "changé" une fois la requête exécuté grâce à la ligne 25
le fichier php ajax_test_coclico.php. ce fichier n'affiche rien il ne fait que des traitements.
Code :
|
onKeyup="ajaxclient()"
Marsh Posté le 07-10-2009 à 23:00:07
t'inquete a écrit : Bonsoir la foule. |
Te compliques pas la vie à réinventer la poudre, comme dit : prends un framework (jQuery ou autre)
Ton script PHP, il doit faire quoi exactement ? Il doit afficher qqch sur le client ?
Marsh Posté le 08-10-2009 à 00:03:38
Ce n'est que du traitement, aucune variable à faire passer. Juste des mises à jour des tables.
@Darknico.
Mon fichier script.php il a la même gueule que le tien, mais je ne me trimballe pas les variables.
Dans mon script JS qui fait le compte a rebours, c'est lorsqu'il arrive à 0 que je dois traiter le script.php.
Tout est automatisé, l'humain n'intervient pas. Donc du coup je ne devrais pas utiliser les onKeyup et companie si ?
Marsh Posté le 08-10-2009 à 00:14:53
Ok alors regardes de ce coté là : http://docs.jquery.com/Ajax
un truc comma ca à la fin de ton timer devrait le faire (en utilisant jQuery, qui n'est qu'un simple fichier JS à inclure ):
Code :
|
Easy non ?
Marsh Posté le 08-10-2009 à 10:51:53
t'inquete a écrit : Ce n'est que du traitement, aucune variable à faire passer. Juste des mises à jour des tables. |
non pas besoin d'événement a ce moment la.
pour suivre SICKofitALL
peut etre un truc du genre (pas testé je ne sais pas si c correcte)
Code :
|
Marsh Posté le 08-10-2009 à 11:28:06
d@kn1ko a écrit :
|
non je pense pas que ca soit correct.
On est d'accord que tu veux que au bout d'un certain laps de temps, ton script PHP soit executé via Ajax pas vrai ?
Alors :
Code :
|
Marsh Posté le 08-10-2009 à 16:00:06
SICKofitALL a écrit : Ok alors regardes de ce coté là : http://docs.jquery.com/Ajax un truc comma ca à la fin de ton timer devrait le faire (en utilisant jQuery, qui n'est qu'un simple fichier JS à inclure ):
Easy non ? |
J'ai mis cette ligne dans le ELSE du script, mais lors de l'execution, j'ai une erreur comme quoi le $ est indefini.
Je dois le définir où ?
Marsh Posté le 08-10-2009 à 17:04:08
Tu as bien intégré le framwork jQuery dans ton code pas vrai ?
Si tu as accès au net à partir de ton appli, tu peux faire comme ca (à mettre dans le HEAD de ton fichier html) :
Code :
|
Soit tu DL le framework et tu l'inclus à partir de ton serveur directement.
Marsh Posté le 08-10-2009 à 17:29:10
J'ai mal intégré le framework
Ca fonctionne presque :
La page qui accueille le compte a rebours doit être rafraichie pour que la requête script.php se lance.
J'ai mis un window.location.reload(true); mais ca rafraichit toutes les secondes
Marsh Posté le 08-10-2009 à 17:51:07
tu peux me filer ton code complet ou un lien vers qqch où je pourrais creuser ?
Marsh Posté le 08-10-2009 à 20:40:17
Donc le truc se présente comme ca : count.js qui comporte le script du compte a rebours, et ma page php qui recoit le tout.
Voici ce qui m'interesse ; c'est à dire l'endroit du script ou on peut tout mettre lorsque le CaR est à 0 :
count.js :
Code :
|
page.php :
Code :
|
Dans le else du count.js, j'ai mis :
Code :
|
et dans return, j'ai placé un refresh.
le control.php possede mes requetes sql.
En fait, c'est normal qu'il me refresh toutes les secondes, puisqu'il compare chaque seconde les variables et utilise telle ou telle fonction suivant le résultat.
Si je ne mets pas de refresh, je dois refresh manuellement ma page.php
Merci pour ton aide
Marsh Posté le 08-10-2009 à 21:18:28
Alors premiere chose, dans ton page.php si je comprends bien tu généres du code JS à partir du PHP ? C'est une tres mauvaise idée !
N'oublies pas que le PHP ca se passe du coté serveur et le JS du coté client, prendre le premier pour bidouiller le second c'est la prise de tête assurée, sans parler du code à maintenir (et à débugger)
Dans ce genre de cas, et si tu as vraiment besoin de récuperer des infos coté serveur pour générer ton CaR, il vaudrait mieux je pense faire un appel ajax pour choper les infos dont tu as besoin, et les utiliser en JS pur.
Pour info aussi, lorsque tu récuperes sur le serveur du HTML, qui en fait contient une balise <script>, celle-ci n'est pas executée (ignorée en fait) du coté client. Il faut alors utiliser $.getScript pour faire ce taf là.
Ca m'a l'air bien complexe en fait. Utilises-tu qqch comme fireBug pour gérer ton code JS (et voir ce qui transite entre le client et le serveur) ?
Marsh Posté le 08-10-2009 à 22:46:06
Bah je fais un echo du script JS, en integrant des variables récupérées en amont. Ces variables la, je les print dans le script JS.
C'est vrai que c'est de la bidouille du JS, mais je ne sais faire autrement, et vu que ca fonctionne sans planter je le laisse tel quel.
Firebug, je ne connais pas. De toute facon, je vois avec le résultat si tout se passe bien. En fait, si les variables passent, le compte a rebours fonctionne normalement. Si elles ne passent pas. Il bug. Voila le test
Marsh Posté le 08-10-2009 à 23:50:16
Jetes un oeil alors : https://addons.mozilla.org/fr/firefox/addon/1843
Marsh Posté le 12-12-2009 à 01:20:04
je ve apprendre le JS (javascript) ajax et tous vas dans se site (en_us)
va dans se site: http://www.w3schools.com/
il y a vraiment tous...
Marsh Posté le 14-12-2009 à 09:36:57
ho punaise, please please please corrige ton auretograf
Marsh Posté le 14-12-2009 à 09:50:29
gatsu35 a écrit : ho punaise, please please please corrige ton auretograf |
c'est que son 4ème post il pouvait pas savoir... en plus il a réussi la très belle perf de 4 déterrages sur 4 posts...
Marsh Posté le 07-10-2009 à 18:45:53
Bonsoir la foule.
Après avoir trouvé une solution à mon 1er pb ( mise a jour d'un champs sans refresh, j'ai laissé tombé le truc ) en voici un 2eme qui se pose.
J'ai un compte à rebours en JS. Lorsqu'il arrive à 0 un script php doit s'executer.
Voici un bout du script JS qui m'interesse :
function formatresults2(){
if (this.timesup==false){
bla bla bla
}
else{
var displaystring="Le compte à rebours est terminé" t
}
return displaystring
}
Le fameux script doit s'executer dans le else. J'ai trouvé un truc : c'est de mettre : window.open('script.php');
C'est génial, le script est executé, mais :
1) Ca ouvre une popup et donc bloqué a 99% du temps
2) Si je recharge la page, on revient au 1)
J'ai essayé de comprendre l'ajax, je n'y arrive pas, vu que je connais strictement rien en JS
Y'a t-il une solution plus élégante ?
Merci
Message édité par t'inquete le 07-10-2009 à 20:52:34