Temat: PHP a formularze- problem
Janusz S.:
Najpierw trzeba przetworzyć zawartość pól typu input przy pomocy JavaScriptu, Ajax nie przesyła jakichkolwiek formularzy. Dane muszą być odpowiednio sformatowane, można je wysłać w formie tablicy, a to nie ma nic wspólnego z formularzami. W Ajaxie metodę GET, POST, czy inną trzeba niezależnie zadeklarować, jak i adres skryptu do którego się wysyła dane.
Piszesz o rzeczach oczywistych. Serializujesz dane formularza (tudzież "przerabiasz" na jeden ze znanych formatów, np JSON czy XML) i przesyłasz na wskazany adres. Ta metoda nie zmieniła się z grubsza od 15 lat, gdy stworzono XMLHttpRequest (zmienia się sposób wywołania w zależności od tego, czy używasz "gołego" JS czy jakiejś biblioteki typu jQuery czy innej).
No i oczywiście nie należy używać jakiegokolwiek przycisku typu submit, a typu button.
"nie należy używać jakiegokolwiek przycisku typu submit" - jest to twierdzenie nieprawdziwe. Wysyłając dane formularza za pomocą AJAX można podpiąć eventListener na zdarzenie "submit" do elementu SUBMIT (co nadpisze domyślą akcję wysyłania formularza synchronicznie). Używając inputa typu BUTTON pozbawiasz formularz domyślnego zachowania, mało tego - nie "ubierając" pól formularza sprawisz, że w ogóle nie jest on kuloodporny - czyli gdy z jakiś przyczyn JS nie załaduje się, trzeba zadbać, by formularz został wysłany domyślnym sposobem (czyli w tym wypadku do PHP), bo pomimo tego, że JS opanował już każde większe środowisko (komputery, mnóstwo urządzeń mobilnych, telewizory, ba, nawet lodówki!) w jakim da się przeglądać net, ciągle jeszcze takie sytuacje są możliwe i należy się na to jakoś przygotować...
Nie trzeba nie oznacza, że nie należy. Oznacza to tylko, że przeglądarki po swojemu implementują HTML. Zresztą zajrzyj Ajax i PHP, Ćwiczenia Praktyczne, Marcin Lis, rozdział 3.
Akurat w tym sensie przeglądarki radzą sobie z formularzami doskonale od lat. I to bez JSa.
Różnice związane z interpretacją samego HTML w dzisiejszych przeglądarkach są tak małe, że w zasadzie można je pominąć w kontekście formularzy. I w związku z tym Twoje twierdzenie "Twój dokument HTML zawiera dwa formularze, być może to nie podoba się niektórym przeglądarkom." nie ma nic wspólnego z prawdą (o czym pisałem wcześniej). Więc raz jeszcze: dokument HTML może zawierać dowolną ilość formularzy HTML - zakładając, że ów dokument jest poprawny składniowo.
Oraz: a ja polecam kurs HTML od kogoś, kto na HTML/JS zjadł zęby:
http://ferrante.pl/books/html/
zamiast książki Helionu od kogoś zajmuje się taśmowym pisaniem książek...
A co do liczby formularzy w dokumencie, to nic nie twierdziłem, że nie mogą być dwa. To było tylko przypuszczenie. Osobiście w dokumentacji nie znalazłem przeciwwskazań, aby nie stosować kilku formularzy. Bez znajomości całego dokumentu trudno mi powiedzieć co nie działa. Stawiający pytanie nie wskazał, o które wersje przeglądarek mu chodziło. Możliwości przeglądarek zmieniają się z wersji na wersję.
Nie w zakresie formularzy, które są już od dawna zdefiniowane (ok, z HTML5 przybyło nieco nowych pól, ale to też już kilka lat temu). Zmienia się/uaktualnia implementacja nowych, przybywających feature'ów HTML5, CSS3 i ES2015...
Ale odbiegliśmy mocno od tematu, bo to jest grupa PHP i nie tego dotyczyło zapytanie (które zresztą tak swoją drogą rozstało przez pytającego rozwiązane)...