AJAX , formulaire et pagination

Bonjour à tous

Je suis sous spip 2.0.0
J'ai un formulaire cvt soumis via ajax.
Le fichier affichant le formulaire affiche aussi une boucle exploitant la sélection faite dans le formulaire.
L'affichage du formulaire, son envoi via ajax, sa récupération et l'affichage de la boucle qui s'en suit sont OK.

Mais lorsque les résultats de la boucle sont paginés je n'arrive pas à obtenir l'affichage des pages suivantes par ajax.

La boucle était dans un inclus, mais je me suis aperçu au cours de mes essais qu'on ne pouvait pas avoir 2 blocs ajax imbriqués.

J'ai donc tout ramené dans le fichier formulaire: toujours pas d'ajax.

J'ai créé un champ caché dans le formulaire avec le nom utilisé par la pagination "debut_<nom de la boucle>", je renseigne sa valeur comme le fait spip puis je soumets le formulaire (seuls les boutons "submit" activent ajax) : toujours pas d'ajax.

Du coup, je ne sais plus quoi faire ! Quelqu'un autait-il une idée ?
Merci pour toute piste.
A+
    François

Mon squelette:
....
   <div id="form_liste class="ajax">
     #FORMULAIRE_LISTE_COLOCATION
   </div>
....

Le fichier formulaires/form_liste.html :

<form name="liste" method="get" action="[(#ENV{action})]">
   #ACTION_FORMULAIRE{#ENV{action}}
   <select ....>
   </select>
   <input type=submit value="<:choisir:>">

   <!-- pour passer les liens de pagination -->
   <input type="hidden" name="debut_xxx" value=""/>

     <BOUCLE_xxx(XXX)...{pagination 3}>
      ...
     </BOUCLE_xxx>
       <center>
<?php
// Calculer les liens de pagination pour (re)soumettre le formulaire
   $step = 3;
   $i1 = $_REQUEST['debut_xxx'];
   if (empty($i1)) $i1 = 0; // premier affiché
   $i2 = min($i1 + $step -1, #GRAND_TOTAL); // dernier affiché
   $j1 = $i1 - $step; // précédent
   $j2 = $i1 + $step; // suivant

   if ($j1>=0) {
?>
     <input type="submit" value="<:precedent:>"
      onClick="document.liste.debut_xxx.value='<?php echo $j1;?>'">
<?php
   }
   if ($j2>=$step and $j2<#GRAND_TOTAL) {
?>
     <input type="submit" value="<:suivant:>"
      onClick="document.liste.debut_xxx.value='<?php echo $j2;?>';">
<?php
   }
?>
       </center>
     </B_xxx>
     <//B_xxx>

</form>

Autant pour moi !

Le pb de la coexistence du formulaire en ajax et de la boucle paginée elle aussi en ajax n'est pas résolu...
MAIS le code (cf. ci-dessous) utilisé pour contourner le problème fonctionne (en ajax) à condition de déclarer le champ $debut_xx dans le fichier formulaires/form_liste.php !!! C'est du CVT !

A+
    François

fhamonno a écrit :

Bonjour à tous

Je suis sous spip 2.0.0
J'ai un formulaire cvt soumis via ajax.
Le fichier affichant le formulaire affiche aussi une boucle exploitant la sélection faite dans le formulaire.
L'affichage du formulaire, son envoi via ajax, sa récupération et l'affichage de la boucle qui s'en suit sont OK.

Mais lorsque les résultats de la boucle sont paginés je n'arrive pas à obtenir l'affichage des pages suivantes par ajax.

La boucle était dans un inclus, mais je me suis aperçu au cours de mes essais qu'on ne pouvait pas avoir 2 blocs ajax imbriqués.

J'ai donc tout ramené dans le fichier formulaire: toujours pas d'ajax.

J'ai créé un champ caché dans le formulaire avec le nom utilisé par la pagination "debut_<nom de la boucle>", je renseigne sa valeur comme le fait spip puis je soumets le formulaire (seuls les boutons "submit" activent ajax) : toujours pas d'ajax.

Du coup, je ne sais plus quoi faire ! Quelqu'un autait-il une idée ?
Merci pour toute piste.
A+
   François

Mon squelette:
....
  <div id="form_liste class="ajax">
    #FORMULAIRE_LISTE_COLOCATION
  </div>
....

Le fichier formulaires/form_liste.html :

<form name="liste" method="get" action="[(#ENV{action})]">
  #ACTION_FORMULAIRE{#ENV{action}}
  <select ....>
  </select>
  <input type=submit value="<:choisir:>">

  <!-- pour passer les liens de pagination -->
  <input type="hidden" name="debut_xxx" value=""/>

    <BOUCLE_xxx(XXX)...{pagination 3}>
            ...
      </BOUCLE_xxx>
      <center>
<?php
// Calculer les liens de pagination pour (re)soumettre le formulaire
  $step = 3;
  $i1 = $_REQUEST['debut_xxx'];
  if (empty($i1)) $i1 = 0; // premier affiché
  $i2 = min($i1 + $step -1, #GRAND_TOTAL); // dernier affiché
  $j1 = $i1 - $step; // précédent
  $j2 = $i1 + $step; // suivant

  if ($j1>=0) {
?>
    <input type="submit" value="<:precedent:>"
     onClick="document.liste.debut_xxx.value='<?php echo $j1;?>'">
<?php
  }
  if ($j2>=$step and $j2<#GRAND_TOTAL) {
?>
    <input type="submit" value="<:suivant:>"
     onClick="document.liste.debut_xxx.value='<?php echo $j2;?>';">
<?php
  }
?>
      </center>
    </B_xxx>
    <//B_xxx>

</form>