Wpis z mikrobloga

#webdev #pytanie #javascript #js #php

Mirki, mam może dość prozaiczne pytanie, ale z formularzami mam niewiele do czynienia i mam małą zagadkę.
Załóżmy, że mam formularz z różnymi inputami/checkboxami/selectami itd. Chciałbym, aby po naciśnięciu "Wyślij" wartości z danych pól były przekazywane wyłącznie do url-a i następowało przeładowanie strony. Na podstawie parametrów z urla skrypt PHP będzie wyświetlał to co trzeba (skrypt jest gotowy i nietykalny bo całkowicie na zewnątrz). W jaki sposób przekazać wiele parametrów do urla? Da się to zrobić samym JS, czy trzeba do obsługi tego formularza jakiś dodatkowy skrypt PHP?
  • 13
@Aysorth: zapewne tak jest, ale do tej pory korzystałem wyłącznie z gotowych rozwiązań, a teraz potrzebuję ulepić to samemu i nie bardzo wiem jak to ugryźć ;)
@netes: da się nawet bez js :)

inputom dajesz jakieś odpowiednie name (takie, jakie odbiera skrypt php)
formularzowi method="get" (jeśli dobrze rozumiem, chcesz, by parametry były widoczne w adresie, na którym wysyłany jest formularz)
oraz action="url do skryptu php"
guzik do wysyłania formularza to input z type="submit"
i tyle :)
@Aysorth: @MacDada: @epi: mam jeszcze jedno pytanie. URL musi być w postaci:

st%3DPA%26ds%3D1%26dp%3D1%26tt%3DB%26sd%3D11%26ed%3D11%26drf%3D1%26drt%3D1%26a%3D3%26c1%3D4%26c2%3D14
zamiast:

st=PA&ds=1&dp=1&tt=B&sd=11&ed=11&drf=1&drt=1&a=3&c1=4&c2=14
(parametry przypadkowe ;) )

Jak przed przekazaniem parametrów do urla dokonać takiego zabiegu? Doczytałem, że muszę użyć encodeURIComponent(), ale gdzie to wcisnąć?
@MacDada: to niestety nie mój wymysł, takiej formy wymaga skrypt, który to sobie później analizuje i wyświetla co trzeba. Czemu coś takiego zrobili nie mam pojęcia, też mi się to nie podoba, ale niestety nie mam na to wpływu, bo skrypt jest na zew. serwerze ( ͡° ʖ̯ ͡°)
@netes: Serwer automatycznie dekoduje to co mu przeglądarki automatycznie zakodują dla URLa.

Jeśli więc masz kodować podwójnie, to musi być jakaś tego przyczyna – opisz dokładniej co i jak oczekuje serwer, bo coś pokręciłeś.
@MacDada: Kurcze, nie wiem jak to dokładniej opisać. Działa to tak:
1. Wchodzimy na stronę z formularzem do wypełnienia.
2. Po jego wypełnieniu i kliknięciu submit przechodzimy do podstrony, która korzysta z zewnętrznego skryptu.
3. Skypt ten na podstawie URLa wyświetla odpowiednie dane z bazy. Z jakiejś przyczyny dostawca bazy przygotował skrypt w taki sposób, że ten wymaga by URL był podwójnie zakodowany. Podanie parametrów bez podwójnego kodowania powoduje, że skypt
@netes: @MacDada: może się mylę, ale nie wygląda mi to na podwójne zakodowanie tylko pojedyncze :)

Anyway, formularz może mieć atrybut enctype przy czym kodowanie jest wartością domyślną, więc jeśli to Cie nie działa, to zostaje więc sam js :)

Czyli na przykład jquerowe serialize i ewentualne dodatkowe przepuszczenie wyniku przez encodeURIComponent a następnie document.location = url + zakodowany string;