Problma passaggio valori input hidden in oggetto $.post()

PazzoFrontEnd

Utente Attivo
8 Ott 2013
46
0
6
Buongiorno ragazzi.
Sapete come è possibile prendere il valore dell'attributo "name" di un input hidden passandolo come "key" di un oggetto nel metodo $.post(action, { key : value }) ??? Il problema è che devo creare una cosa dinamica, perchè non so a priori quanti input hidden avrò nella pagina html. Esempio:

Codice:
     <input type='hidden' name='opzione1' value=''>
     <input type='hidden' name='opzione2' value=''>
     <input type='hidden' name='opzione3' value=''>
     <input type='hidden' name='opzione4' value=''>
//ecc...ce ne possono essere di più o di meno

//chiamata ajax
      $.post( action,
              { 
                  opzione1 : ...,
                  opzione2 : ...,
                  opzione3 : ...,
                  opzione4 : ...,
                  //ecc...
                }, "html" ).done().fail();
      );

Inoltre, cosa ben più complessa, a parte ho un array di stringhe i cui valori devono corrispondere in base all'indice ai valori di opzione1, opzione2, opzion3, opzione4, ecc... Integro l'esempio:

Codice:
var mioArray = ["cane","gatto","elefante","leone" /*ecc...*/ ];

//chiamata ajax integrata
      $.post( action,
              { 
                  opzione1 : "cane",
                  opzione2 : "gatto",
                  opzione3 : "elefante",
                  opzione4 : "leone",
                  //ecc...
                }, "html" ).done().fail();
      );

Immagino debba mettere tutto in delle variabili ma non so dove partire. Forse una soluzione potrebbe essere prima valorizzare i miei input hidden con i valori dell'array...Potete darmi una mano? sono in cattive acque! :(
Grazie a tutti!
 
Buongiorno Criric,
io nel frattempo ho creato dinamicamente gli input hidden, così:

Codice:
        var mioArray = ["cane","gatto","elefante","leone" /*ecc...*/ ];

        var i = 0;
        for (i=0; i < totaleDomande; i++) {
            var index = i+1;
     
             $("#form").append("<input type='hidden' class='opzioni' name='opzione"+index+"' value='"+mioArray [i]+"' id=''>");

        }

      //chiamata ajax integrata
      $.post( action,
              { 
                  idForm : ...,
                  idPagina : ...,
                  opzione1 : "cane",
                  opzione2 : "gatto",
                  opzione3 : "elefante",
                  opzione4 : "leone",
                  //ecc...
                }, "html" ).done().fail();
      );

Ora, avendo questo codice, come posso utilizzare serialize() per passare ogni valore creato dinamicamente al posto giusto nell'oggetto? (tenendo presente che avrò anche altre coppie chiave/valore che non dipendono dagli input hidden)
 
io uso questa sintassi
Codice:
$.ajax({
        type: "POST",
        url: "pagina.php",
        data: $("#id_del_form").serialize(),
        success: function(response) {
            // azione da eseguire in caso di successo
        },
        error: function(e) {
            // azione da eseguire in caso di errore
        }
    });
in pagina.php ti ritroverai tutti i campi del form
PHP:
var_dump($_POST);
 
Purtroppo il sito non utilizza php.

Secondo te funziona in questo modo, mi creerà l'oggetto con tutti i dati che mi servono?:

Codice:
        var mioArray = ["cane","gatto","elefante","leone" /*ecc...*/ ];

        var i = 0;
        for (i=0; i < totaleDomande; i++) {
            var index = i+1;
     
             $("#form").append("<input type='hidden' class='opzioni' name='opzione"+index+"' value='"+mioArray [i]+"' id=''>");

        }

      var paramsForm = $("#form").serialize();
     
      //chiamata ajax integrata
      $.post( action,
                paramsForm, 
               "html" ).done().fail();
      );
 
non saprei .. prova.

e come li recuperi i dati in post?

Faccio una raplace di un <ul> interno al form che mi visualizza il risultato:

Codice:
   .done(
      function( data ) {
           $( "#form ul" ).replaceWith( data );
      })

Purtroppo l'applicazione funziona così, non è una scelta mia. A me interessa solamente sapere se la votazione funziona e precisamente se viene passato tutto l'oggetto in post
 
Codice:
       var mioArray = ["cane","gatto","elefante","leone" /*ecc...*/ ];

        var i = 0;
        for (i=0; i < totaleDomande; i++) {
            var index = i+1;
     
             $("#form").append("<input type='hidden' class='opzioni' name='opzione"+index+"' value='"+mioArray [i]+"' id=''>");

        }

      var paramsForm = $("#form").serialize();
     
      //chiamata ajax integrata
      $.post( "myAction.do",
                paramsForm, 
               "html" ).done().fail();
      );

Ok, dovrei aver risolto :)
Così mi passa tranquillamente l'oggetto senza andare a passare i valori singolarmente, e passandoli in input hidden...sarei curioso di capire come avrei potuto fare senza il .serialize() ...però anche così sembra fungere... :D

Grazie Criric!
 
sarei curioso di capire come avrei potuto fare senza il .serialize()
con un ciclo
HTML:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">            
    $(document).ready(function(){	            
        $("#form input").each(function(){
            alert($(this).attr("name") +  " : " + $(this).val());
        })
    });
</script>
<form id="form">
    <input type="text" name="1" value="1"/>
    <input type="text" name="2" value="2"/>
    <input type="text" name="3" value="3"/>
</form>
 

Discussioni simili