Mam pewien skrypt odpowiadający za "ajaxową" komunikację.
Zaiste wszystko w nim działa, ale nie pasuje mi pobieranie danych z pól tekstowych i innych inputów.
Przygotowanie danych do wysłania wygląda następująco:
$('form').on('submit', function(e) { var form_id = $(this).attr('id'); if(form_id == 'jakis_formularz')) { var login = $("input[name=user_login]").val(); var pass = $("input[name=user_password]").val(); var string = '&user_login=' + login + '&user_password=' + pass } else if(form_id == 'inny_formularz')) { var name = $("input[name=name]").val(); var costam = $("input[name=costam]").val(); var select = $("select[name=jakis_select] option:selected").val(); var string = '&name=' + name + '&costam=' + costam + '&select=' + select } else if(form_id == 'jeszcze_inny_form')) { var zaznaczenie = $("input[name=inputchecked]:checked").val(); var string = '&test_zaznaczenie=' + zaznaczenie } var request = $.ajax({ url: $(this).attr('action'), type: $(this).attr('method'), datatype: 'json', data: string }); (...) e.preventDefault(); });
Jeśli chcę, aby jakiś formularz był obsługiwany w tle, muszę za każdym razem definiować jego pola w ten sposób do każdego z forma. Da się to w jakiś sposób zautomatyzować? Nie wpadłem jeszcze na żaden błyskotliwy sposób...
Chodzi mi o to, żeby skrypt sam pozbierał dane z inputów znajdujących się w danym formularzu. a następnie wszystko zgrabnie połączył w jedną całość do 'zmiennej string', aby można było to przesłać do skryptu. Rzecz jasna tak, aby poprawnie działały pola select i checkbox/radio... Rzecz ta jest mi potrzebna, gdyż jak się okazuje, w niektórych formularzach nie zawsze będzie stała ilość 'inputów', a niekiedy są one generowane, zaś takich nie mógłbym zdefiniować.