2013-09-21 4 views
1

J'essaie d'envoyer mes données de formulaire ainsi qu'un numéro de page (pour pagination) dans un seul message(), malheureusement, je ne peux pas le faire fonctionner . Voici le code et il ne fonctionne pas avec la balise {name: data} incluse. Il fonctionne bien avec enlevé mais évidemment la pagination ne fonctionne pas. Quelqu'un sait comment je peux envoyer les données de formulaire sérialisé ainsi que certaines informations d'une variable?Envoyer des données de formulaire sérialisées ainsi que d'autres données avec jQuery post()

$(document).ready(function(){ 
      //set initial page to zero 
     var pageRequest = 0; 
     $('.datepicker').datepicker(); 

     $('#search_text').keyup(function(){ 
      $('#test_form').submit(); 
     }); 

     //assign current page number to variable and get a new page 
     $('#page-links').on('click', '.page-indv', function(){ 
      var pageRequest = $(this).attr('id'); 
     $('#test_form').submit();}); 

     //Send form data and page number, recieve JSON results 

     $('#test_form').submit(function(){ 
      $.post(
       $(this).attr('action'), 
          {pgeNmbr : pageRequest}, //works fine with this line removed 
       $(this).serialize(), 
       function(data){ 
        $('#results').html(data.html); 
        $('#page-links').html(data.page); 
       }, 
       "json" 
      ); 
      return false; 
     }); 
     $('#test_form').submit(); 
    }); 
+0

Si vous avez déjà un événement 'click' - vous pouvez ajouter un champ caché dans un formulaire et y écrire la valeur de pagination courante. Bien sûr, ce n'est pas une solution. mais reste. –

+0

u_mulder, merci, c'est comme ça que je l'ai eu fonctionnait, juste curieux s'il y avait un moyen de l'ajouter aux données de poste au lieu d'utiliser un champ caché. –

Répondre

1

utilisation

.. 
$(this).serialize()+'&pgeNmbr='+pageRequest 
.. 

serialize() retours param=value&param=value etc, il vous suffit d'ajouter le pageSolliciter à la fin.


Je pris conscience de la réponse (si elle ne fonctionne toujours pas): Changer la ligne

var pageRequest = $(this).attr('id'); 

à

pageRequest = $(this).attr('id'); 

Il y a un problème de cadrage ici, var pageRequest = 0; sur le dessus, comme une variable globale, mais vous affectez pageRequest en tant que nouvelle variable locale dans l'événement click en utilisant var, qui n'est pas visible à l'extérieur - et c'est le "global" pageRequest vous voulez changer pour une utilisation dans votre .

+0

Cela permet au script de s'exécuter, mais n'envoie pas pgeNmbr avec la demande de publication pour une raison quelconque. Au moins, je ne le pense pas. Si j'envoie l'information en utilisant un formulaire caché et modifie la valeur avec jQuery la pagination fonctionne, donc le côté PHP fonctionne ... –

+0

Alors pageRequest n'est pas défini, je suppose que vous l'avez inséré correctement. Ce n'est pas une supposition, regardez serialize http://api.jquery.com/serialize/ utilise beaucoup le dessus pour terminer les appels ajax avec des params supplémentaires (souvent codés en dur). Essayez de faire 'var s = $ (this) .serialize() + '& pgeNmbr =' + pageRequest' et connectez-le à la console. – davidkonrad

+0

@ pierre, essayez la suggestion dans la mise à jour – davidkonrad

Questions connexes