• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Przesyłanie danych poprzez AJAX a semantyka HTML

Object Storage Arubacloud
0 głosów
317 wizyt
pytanie zadane 7 września 2017 w JavaScript przez kevin Mądrala (5,010 p.)

Witam!

Czy jeżeli wysyłam dane z input'ów korzystając z AJAX $.post( ... ) to owe inputy powinny być w znaczniku <form></form> ? Jeżeli jest form to musi być submit a ten przycisk przechodzi do nowej strony a nie przesyła danych w tle, jak to powinno być rozwiązane ?

Abym wysłał dane z tych znaczników muszę je pobrać za pomocą $(...).val(); I tutaj mam kolejne pytanie, w kodzie HTML mam kilka input'ów:

<form>
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="text">
    <input type="text">
</form

Pobierając wartości input'ów poprzez:

var input_data = [];

var i = 0;
$("form input[type=text').each( function () {
   
   input_data[i] =  $(this).val();
   i++;
});

Zawsze mam pewność że w indexie tablicy 0 znajdzie się wartość pierwszego od góry input'a ? Mogę co prawda do każdego input'a dodać id ale przy 8-9 input'ach to może się bałagan zrobić.

1 odpowiedź

0 głosów
odpowiedź 7 września 2017 przez Comandeer Guru (601,110 p.)

Źle do tego podchodzisz. Zamiast implementować osobny mechanizm obok formularzy, po prostu nadbuduj obsługę Ajaksa na formularzu: podepnij się pod zdarzenie submit formularza i je zablokuj.

Tego typu podejście nazywa się Progressive Enhancement.

komentarz 7 września 2017 przez kevin Mądrala (5,010 p.)

Czyli pusty znacznik <form> bo adres pliku .php podaję w metodzie $.post() podpinam się pod submit, blokując zdarzenie. Teraz mam to zrobione na zwykłym przycisku onClick="send()"

komentarz 7 września 2017 przez Comandeer Guru (601,110 p.)

Znów próbujesz rozdzielać Ajaksa od formularza. Wszystkie dane powinny być w kodzie HTML, tak samo jak adres pliku w form[action]. W JS po prostu te dane wykorzystujesz.

komentarz 7 września 2017 przez kevin Mądrala (5,010 p.)

var postData = {
        'name'          : nn,
        'surname'       : ss

};

$.post("php/ajax_plik.php", postData , function( data ) { });

Czyli te dane ajax_plik.php mam za pomocą jQuery pobrać z form[action] i wstawić do $.post ?

komentarz 7 września 2017 przez Comandeer Guru (601,110 p.)
Osobiście bym tak zrobił.
komentarz 7 września 2017 przez kevin Mądrala (5,010 p.)
Dlaczego ?
komentarz 7 września 2017 przez Comandeer Guru (601,110 p.)

Bo w tym momencie, jeśli JS nie zadziała, użytkownik wciąż może przesłać formularz.

Podobne pytania

0 głosów
2 odpowiedzi 964 wizyt
pytanie zadane 22 lutego 2020 w JavaScript przez Piotr Młynarczyk Początkujący (380 p.)
0 głosów
3 odpowiedzi 278 wizyt
pytanie zadane 7 czerwca 2019 w JavaScript przez kacper1445 Gaduła (4,880 p.)
0 głosów
1 odpowiedź 268 wizyt
pytanie zadane 4 maja 2017 w JavaScript przez Ziuziek Mądrala (5,140 p.)

92,568 zapytań

141,420 odpowiedzi

319,617 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...