IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

[JQuery] Pb d'execution de script php


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 15
    Par défaut [JQuery] Pb d'execution de script php
    Bonjour,
    Explication rapide du problème :
    J'ai fait une petite application de drag and drop sur des objets SVG. Et je voudrais pouvoir enregistrer les modifications suite au drag and drop. Le fichier que je dois enregistrer est donc un .svg .
    Pour cela j'ai fait plusieurs requetes XMLHttpRequest qui appellent des scripts PHP de facon asynchrone. Jusque là tout va bien ça marche. Le problème est que je fais consécutivement une centaine de requetes XHR (donc execution de script php), et pour je ne sais quelle raison certains scripts (A) se finissent avant d'autres (B), alors que les scripts B ont été lancé avant les scripts A.
    Pour etre un peu plus clair je vais vous montrer un extrait de mon fichier lancant les XHR.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    function SaveMap()
    {
            alert("Save in progress ...");
            //Ecriture du header du fichier SVG
    	var transport = getXMLHttpRequest();
    	var adresse_init = ["init_map.php"];
            //astuce bidon pour eviter que certain objets soient ecrits avant d'autres
    	svg_recwall.sort();
    	svg_text.sort();
    	transport.open("get", adresse_init.join(""), true);
    	transport.send(null);
    	//writeWall appel un traitement PHP qui ecrit dans le fic SVG
    	for(var i in svg_recwall)
    	{
    		window.setTimeout("writeWall(" + i + ", 'W' )", 1000);
    	}
    	pausecomp(700);
    	for(var i in svg_recdrop)
    	{
    		window.setTimeout("writeWall(" + i + ", 'D' )", 50);
    	}
    	pausecomp(1000);
    	//writeCell appel un traitement PHP qui ecrit dans le fic SVG
    	for(var i in svg_recgem)
    	{
    		window.setTimeout("writeCell(" + i + ")", 50);
    	}
    	pausecomp(1000);
    	//writePath appel un traitement PHP qui ecrit dans le fic SVG
    	for(var i in svg_recpath)
    	{
    		window.setTimeout("writePath(" + i + ")", 1000);
    	}
    	pausecomp(1000);
    	//writeText appel un traitement PHP qui ecrit dans le fic ...
    	for(var i in svg_text)
    	{
    		window.setTimeout("writeText(" + i + ")", 1000);
    		if( i == (svg_text.length - 1))
    		{
                            //dernier traitement pour finaliser le fichier svg (fermeture balises)
    			finishing_save();
    		}
    	}
    	alert("Save done !");
    }
    Donc comme vous l'avez compris les fonctions writeXXX() sont des fonctions qui récupèrent les objets et les attributs voulus pour les réécrire dans le fichier SVG à l'aide d'un traitement PHP. Mais ici le temps de traitement PHP n'est pas le même dans tous les scripts .... donc certains passent avant d'autres alors qu'algorithmiquement parlant ils sont derrière.
    La fonction pausecomp() est simplement un compteur sensé retarder l'execution de la fonction (oui je sais c'est pas joli du tout!!).
    Au final avec ce système D j'arrive à faire en sorte que le fichiers SVG soit bien réécrit mais le problème reste dans le dernier traitement (finishing_save()) qui lui est extrèmement court (il écrit simplement "</g></svg>" dans le fichier) et qui s'execute beaucoup trop tôt : juste après la première requete XHR d'initialisation....
    J'ai tenté par tous les moyens de faire attendre l'interpréteur mais ça ne marche pas.
    Au final j'ai pensé à faire une requete synchrone mais le pb c'est qu'il n'y aura aucune réponse du serveur ... donc rien à attendre ...
    Quelqu'un aurait-il une idée svp??? parce que là je commence à désespérer.
    Merci

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    Salut

    N'utilisant que jquery, je te répondrais en m'appuyant sur ses examples, mais l'idée reste la même.
    Il est possible d'indiquer un callback, c'est à dire une fonction qui ne sera appelée que dans le process supportant le callback sera finit
    http://docs.jquery.com/Ajax/jQuery.g...tacallbacktype
    Un exemple que tu pourras facilement appliquer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function end_callback(data, textStatus) {
      // data could be xmlDoc, jsonObj, html, text, etc...
      //this; // the options for this ajax request
      $.get('http://site.com/adresse_end.php');
    }
    $.get('http://site.com/adresse_init.php', 'var=toto&data=tab[]', 'end_callback');
    Ainsi, la fin ne pourra jamais jamais être avant le début.
    en espérant que ça pourra t'aider.
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Executer un script PHP apres click button en JQuery
    Par facilus68 dans le forum jQuery
    Réponses: 10
    Dernier message: 11/08/2013, 23h01
  2. Exécuter un script PHP
    Par Ed777 dans le forum Langage
    Réponses: 4
    Dernier message: 03/10/2006, 19h08
  3. Executer mes scriptes php sous linux
    Par soulbe dans le forum Linux
    Réponses: 1
    Dernier message: 17/08/2006, 18h39
  4. [Système] Execution de script php
    Par Anduriel dans le forum Langage
    Réponses: 5
    Dernier message: 24/12/2005, 15h01
  5. Réponses: 6
    Dernier message: 23/12/2005, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo