Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957

    [Ajax] inviare un form completo

    Ciao a tutti,
    volevo sapere se ci sono delle funzioni che permettono di inviare tutte le variabili (valori input, select e textarea) di un form via ajax. Tutti gli esempi che ho visto necessitano tutti di impostazioni su TUTTI i nomi o gli id delle variabili.
    Non c'è un modo per inviare tutto quello che c'è dentro ad un determinato form?

    grazie

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    prova se va bene :master:

    il parametro form è l'id del form

    codice:
    //-----------------------------------------------------------------
    //crea la stringa dei parametri da utilizzare con ajax
    //-----------------------------------------------------------------
    function crea_parametri(form)
    {
        if(typeof(form) == "undefined")
            return;
        else if(typeof(form) == "string")
        {
            var f = document.getElementById(form);
            if(!f) return;
        }
        else if(typeof(form) == "object")
            var f = form;
        
        
        var elements = f.elements;
        if(!elements) return;
        var n = elements.length;
        var s = [];
        for(var i = 0; i < n; i++)
        {
            var element = elements[i];
            var name = element.name;
            if(name != "")
            {
                var type = element.type;
                var value = encodeURIComponent(element.value);
                if(type == "text" || type == "file" || type == "password" )
                {
                    s.push(name + "=" + value);
                }
                
                else if(type == "hidden")
                {
                    //non considero gli elementi riservati quali:
                    //__EVENTTARGET, __EVENTARGUMENT, __VIEWSTATE, __EVENTVALIDATION
                    if(name.indexOf("__", 0) == -1) s.push(name + "=" + value);
                }
                
                else if(type == "checkbox" || type == "radio" )
                {
                    if(element.checked)
                    {
                        s.push(name + "=" + value);
                    }            
                }
                else if(type == "textarea")
                {
                    s.push(name + "=" + value);
                }
                
                else if(type == "select-one" || type == "select-multiple")
                {
                    var c = options_value_selezionati_join(element) + "";
                    if(c != "") s.push(name + "=" + c);
                }
                
            }
            
        }
        s = s.join("&");
        return s;
    
    
        //------------------------------------------------------------
        //restituisce gli elementi value selezionati da una lista
        //separati da virgola
        //------------------------------------------------------------
        function options_value_selezionati_join(lista)
        {
    	    var s = "";
    	    for(var i = 0; i < lista.options.length; i++)
    	    {
    		    if(lista.options[i].selected) s += "," + lista.options[i].value;
    	    }
    	    return s.substr(1);
        }
    
    
    
    
    }
    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    sembra perfetto... come posso ringraziarti?

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    c'è un piccolo problema....
    la codifica dei caratteri non ascii,
    esempio se invio "è+òà+è+" passano tutti sballati.
    C'è un modo per risolvere il problema?

  5. #5
    puoi risolvere il problema dei caratteri quando richiami nello script lato-server i valori del form passati via ajax (es. asp --> server.htmlencode(), es. php --> htmlentities)

    p.s.
    per recuperare tutti i valori del form e inviarli via ajax, volendo usare una libreria come prototype, c'era il comodissimo comando form.serialize..

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    957
    con htmlentities non ho risolto, però con utf8_decode() si.
    Non è possibile far si che il form (e quindi tutta la richiesta ajax) venga inviata in iso?

  7. #7
    dico una stronzata, se provi invece con decodeURIComponent?

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.