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
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@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źć ;)
  • Odpowiedz
@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 :)
  • Odpowiedz
@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 ( ͡° ʖ̯ ͡°)
  • Odpowiedz
@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ś.
  • Odpowiedz
@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
  • Odpowiedz
@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;
  • Odpowiedz