2010-12-02 7 views
1

suppose donc j'ai 3 formesajax soumettre plusieurs formes via jquery

<form name="form1"> 
<input name="input"></input> 
<submit></submit> 
</form> 

<form name="form2"> 
<input name="input"></input> 
<submit></submit> 
</form> 

<form name="form3"> 
<input name="input"></input> 
<submit></submit> 
</form> 

Chaque forme a son propre bouton d'envoi

suppose que maintenant j'ai une autre forme

<form id="submitAll"> 
<submit value="submit all"></submit> 
</form> 

dont la semelle la fonction est de soumettre tous les 3 autres formes simultanément .... maintenant voici les contraintes:

  1. lorsque submitAll est soumis, il doit le faire en utilisant Ajax et transmettre les données d'entrée de tous les 3 autres formes à processor.php de préférence via POST
  2. processeur.php doit être capable de distinguer entre quelles entrées vont à laquelle forme ... et traiter ensuite les entrées de chaque forme séparément

Ma question est .... quelle est la meilleure façon de faire processor.php pouvoir distinguer les entrées appartiennent à quelle forme ...

Mes tentatives précédentes consistaient à utiliser la sérialisation de jquery pour sérialiser toutes les entrées des 3 formulaires, mais ensuite il fusionnerait toutes les entrées dans une chaîne et non Comme les entrées dans les formulaires ont le même nom, la chaîne va comme "input = bla & input = bla & input = bla" et je ne peux pas distinguer entre quelle entrée va à quelle forme .....

Il est très préférable d'avoir les entrées dans les formulaires pour avoir le même nom afin que processor.php peut exécuter facilement

est-il loin pour faire des chaînes POST être transmises sous forme de tableaux ou JSON ou tout autre format de sorte que le processeur .php peut distinguer quelle entrée va à quelle forme sans faire les noms d'entrée diffèrent? rappelez-vous qu'il doit le faire via Ajax

merci d'avance !!!

Répondre

2

Pourquoi

  • name = "Form2 [entrée]"
  • name = "Form3 [entrée]" ne vous utilisez convention de nommage comme

    • name = "Form1 [entrée]"

    puis faites serialize régulière et .post $, cela vous aidera à garder la même convention de nommage dans la boucle du processeur

    EDIT:

    <?php 
    foreach($_POST as $form) { 
        // $form = array('input' => 'i am here') 
        processForm($form); // names are still the same for all forms 
    } 
    ?> 
    
  • +0

    si vous le faites, serait-il analysé comme un tableau multidimensionnel? donc supposons que $ post contienne toutes les données post ($ _POST), would $ post ["form1"] soit un tableau contenant toutes les entrées de form1? ... donc $ post ["form1"] ["input"] contiendrait la valeur d'entrée? –

    +0

    @kamikaze_pilot, lisez mon EDIT – Ish

    1

    Ne vous voulez utiliser un tableau? Les entrées seraient dans l'ordre où elles ont été sérialisées.

    <input name="input[]" /> 
    
    0
    <form name="form1" class="postable"></form> 
    <form name="form2" class="postable"></form> 
    <form name="form3" class="postable"></form> 
    

    javascript:

    $(document.ready(function(){ 
        $("a.submitforms").click(function(){ 
         $('form.postable').each(function(){ 
          Form = $(this); 
          payload = $(Form).serialize(); 
    
          //Send payload via Ajax. 
         }); 
        }); 
    })); 
    

    Ceci est juste une autre méthode, mais je suis d'accord avec Ish Kumar « s méthode!

    Questions connexes