#1 2009-08-20 16:36:45

flipflip
Membre
Lyon
2005-03-19
2316

Utiliser ajax+jquery avec un plugin

Salut, je bataille avec le dev du plugin Download Multi, enfin surtout j'essaie d'intégrer de l'ajax côté public.
Le gros soucis est que j'arrive bien à envoyer des données via un formulaire avec ce code lorsqu'on visite une catégorie :

Code:

$(document).ready( function () {  
  $('#dl').submit(function() {  
    var action = $('#dl input[name=action]').val();
    var mode = $('#dl input[name=mode]').val();
    var tmp = '';
    var field = document.dl.id_images; 
    
    for (var i=0;i < field.length; i++) {
      if (field[i].checked) {
        tmp += field[i].value + ',';
      }
    }
                 
    $.ajax( {
      type: "POST",
      url: $(this).attr("action"),
      data: "action=" + action + "&id_images=" + tmp + "&mode=" + mode,
      success: function(msg) {
        $("span#message").html(msg);               
      }     
    });
    return false;
  });
});

Le problème est que lorsque je valide il ne m'ajoute pas les photos à mon panier mais qu'en plus il me superpose la page préalablement chargé. En gros j'ai deux fois la même page affiché avec un décalage à droite de quelques pixels. Je pense que c'est lié au moteur smarty mais je ne trouve pas d'info la dessus. Puis m'es venue une idée suite à une astuce donnée par Plg, au lieu de m'inspirer des web-services, pourquoi ne pas créer mon propre module web-services ? Au contraire rédigeant ce post je viens de penser qu'un web-services "n'affiche rien" par définition. Qu'en pensez-vous ? Et surtout comment faire pour créer un web-services pour mon plugin ?

Merci d'avance.

P.S. : Ancien titre : Créer un webservice d'un plugin

Dernière modification par flipflip (2009-08-25 11:07:28)


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#2 2009-08-20 19:43:54

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Utiliser ajax+jquery avec un plugin

pour ma part, pour tout ce qui est ajax au niveau de mes plugins c'est simple :
- tu rentres dans le plugin
- tu vérifie que le paramètre "ajaxfct" par exemple est alimenté
      si c'est le cas
           - gestion de ce qu'il y a faire
           - puis termine le script avec la commande exit() avec en paramètre, éventuellement des informations retour


si tu veux creuser plus, regarde comment le plugin LMT est conçut.


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#3 2009-08-21 11:09:41

flipflip
Membre
Lyon
2005-03-19
2316

Re: Utiliser ajax+jquery avec un plugin

J'ai essayé de regarder mais je t'avoue que j'ai du mal à relire ton code ;)

J'ai compris que tu utilise ajax au niveau admin et pas dans le cas de post d'un formulaire. Modifier un élément à cause d'un clic à telle ou telle endroit je sais faire. Ce que je pige pas c'est pourquoi il m'affiche le contenue de $template une deuxième fois alors que je renvoie un simple "echo ok" au niveau de mon code php.


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#4 2009-08-21 12:00:39

flipflip
Membre
Lyon
2005-03-19
2316

Re: Utiliser ajax+jquery avec un plugin

Je corrige, contrairement à ce que j'ai dis ce n'est pas la totalité de la page qui est dupliqué mais uniquement la barre de menu...
Je continue à creuser, dans la partie ajax je lui dis d'envoyer à $(this).attr("action") ce qui reproduit le # du formulaire. Pour tester je me suis recréer une page toute simple avec ce même code et un formulaire quasi identique et surprise ça me duplique le formulaire, en gros presque le même comportement que dans le code de Piwigo... Maintenant va falloir que je trouve comment lui dire de poster à une certain url.

Dernière modification par flipflip (2009-08-21 12:18:49)


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#5 2009-08-21 20:37:14

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Utiliser ajax+jquery avec un plugin

flipflip a écrit:

J'ai essayé de regarder mais je t'avoue que j'ai du mal à relire ton code ;)

bah !?
:o)


au lieu de faire echo 'OK'; fait exit("OK");
;)

tu récupère la page car lors de ton appel AJAX tu fais probablement appel à une adresse du genre http://monsite/index.php?param1=xxx&param2=yyy
du coup, piwigo complètement la page et génerère SA page avec smarty.

avec un exit($variable) tu stoppes l'exécution du script avant appel de smarty, et php renvoi dans la page le contenu de $variable


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#6 2009-08-25 11:06:28

flipflip
Membre
Lyon
2005-03-19
2316

Re: Utiliser ajax+jquery avec un plugin

Ouffff j'ai pas mal ramé mais j'ai enfin compris comment ça marche.

Merci pour les infos.

P.S. : ancien titre : Créer un webservice d'un plugin


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#7 2009-08-25 16:56:27

flipflip
Membre
Lyon
2005-03-19
2316

Re: Utiliser ajax+jquery avec un plugin

Tout compte c'est pas top.

La solution de exit() va bien si le message à renvoyer est le dernier, mais par exemple pour un script qui exécute plusieurs tâches avec des tas de contrôles et ces différents contrôles peuvent renvoyer des messages mais ils ne sont pas forcement bloquant, le script peut continuer sont exécution, avec un exit il s'arrête. J'ai bien pensé à stocker les messages dans un tableau php mais je n'arrive pas à le relire côté javascript :(


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#8 2009-08-25 23:26:13

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Utiliser ajax+jquery avec un plugin

stockage dans tableau : c'est l'idée.

Il faut ensuite formater les données restituées.

Lecture côté JS, tu as plusieurs solutions :
- exploiter du format  "CSV" => avec du JS et des expressions régulières, tu dois pouvoir le faire
- exploiter du format JSON => jQuery sait faire
- exploiter du format XML => jQuery sait faire (ou au pire, JS fournit le nécessaire...)


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#9 2009-08-26 08:09:30

flipflip
Membre
Lyon
2005-03-19
2316

Re: Utiliser ajax+jquery avec un plugin

Ok je vais voir.
Ça me parait bien complexe pour bien peu de chose cette communication entre jquery et php :( Je sais pas si c'est bien au point cette technologie ?


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#10 2009-08-26 08:50:44

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Utiliser ajax+jquery avec un plugin

php fournit ce qu'il faut pour traduire du XML et du JSON me semble-t-il, ainsi que jQuery&JS


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#11 2009-08-26 10:15:14

flipflip
Membre
Lyon
2005-03-19
2316

Re: Utiliser ajax+jquery avec un plugin

ah alors peut être une piste pour éviter de jouer au McGyver :D


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

#12 2009-10-20 21:39:45

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Utiliser ajax+jquery avec un plugin

flipflip,

as-tu finalement réussi ?
J'ai le même problème que toi, avec un renvoi complet de la page au lieu du code spécifié.

Merci de ton retour.

Hors ligne

#13 2009-10-21 00:10:11

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: Utiliser ajax+jquery avec un plugin

Je ne suis pas un spécialiste d'ajax, mais pourquoi ne pas faire un petit fichier php qui ne gère que les appels ajax?
Je m'étais essayé à ajax avec LocalFiles Editor... c'est juste histoire d'utiliser ajax, mais quand on clique sur "Activer Editarea" ou "Désactiver Editarea", jQuery appelle le fichier update_config.php qui s'occupe uniquement de sauvegarder la config d'editarea en base de donnée.... Le fichier ne renvoit rien (mais il peut renvoyer n'importe quoi).


P@t

Hors ligne

#14 2009-10-21 07:37:14

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Re: Utiliser ajax+jquery avec un plugin

la technique que j'emploie n'est pas la plus optimisée, mais elle a le mérite de permettre facilement de gérer :
- l'authentification de l'utilisateur
- l'initialisation de toutes les informations "piwigo" (langue, configuration, ...)
Et donc de se retrouver lors de l'exécution du code, dans un environnement "piwigo" complet.

Faire un fichier php qui ne gère que çà implique de devoir recoder tout çà (aujourd'hui, "tout çà" est noyé dans un enchainement d'instructions qu'il est impossible de réexploiter sans devoir recoder)


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#15 2009-10-21 08:18:42

flipflip
Membre
Lyon
2005-03-19
2316

Re: Utiliser ajax+jquery avec un plugin

Salut, j'ai laissé tombé pour deux raisons :
- ma plateforme de dev et prod n'a pas une version de php assez récente pour gérer le JSON;
- pas le temps de creuser plus.

C'est en attente dans le bugtracker ;)


Le cerveau à des capacités tellement étonnantes qu’aujourd’hui pratiquement tout le monde en à un

Mon site : http://www.blogoflip.fr

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact