Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Przekazywanie zmiennych z formularza ?
Forum PHP.pl > Forum > XML, AJAX > AJAX
xajart
Witam. 

Trafiłem na problem, który nie wiem jak rozwiązać aby było dobrze. Mianowicie posiadam zrobioną wyszukiwarkę towarów, jest ona opracowana na formularzu, który jest z kolei obrobiony na jQuery i jNice. Kiedy użytkownik wybiera z listy opcje 1 na jej podstawie (operacji na elementach DOM) jest wyświetlana lista z wyborem opcji 2. Kiedy kliknie przycisk submit jest odsyłany do strony search.php

Formularz działa na zasadzie odsyłania do innej strony gdzie weryfikuje wybrane opcje i przeszukuje BD wg zadanych kryteriów. Cały problem polega na tym że kiedy jest wyłączona JS w przeglądarce zmienne są pobierane za pomocą POST, jednak kiedy użytkownik ma włączone JS wówczas cały formularz działa wg opisu wyżej i opcje wybrane musze przesłać przez Jquery do pliku (bo w metodzie POST nie prześle tych danych z racji tego że są inne).

W jQuery mogę funkcją $.post przesłać dane do pliku tylko w tym sęk że wykonane operacje w PHP zostaną do tej funkcji zwrócone. A mi chodzi o przesłanie jednokierunkowe tych danych do pliku search.php w momencie kliknięcia przycisku submit jako zmienne POST. Co widzę że się nie da tym sposobem zrobić (albo brakuje mi wiedzy). 

Wyczytałem gdzieś że najlepiej to rozwiązać przekazując te dane do jakiegoś pliku PHP a w nim je zapisać pod zmienne sesji, wówczas w pliku search.php zaprogramować sprawdzanie czy JS jest włączone jeżeli tak to wówczas przeszukiwać dane wg zmiennych zadeklarowanych w sesji, a jeżeli nie to na zmiennych POST. 

Moim zdaniem ten sposób jest trochę przekombinowany - czy nie da się tego rozwiązać jakoś prościej ?
Berg
Wysyłać za pomocą GET'a? Dane i tak potem walidujesz więc to chyba nie stanowi problemu. Co do samego POST'a to zawsze możesz utworzyć dodatkowy, niewidoczny formularz, przesłać do niego dane i wykonać dla niego submit winksmiley.jpg
xajart
Metodą GET jest to jakieś rozwiązanie, problem pojawia się w przypadku kiedy użytkownik w jednym z tych pól wpisze jakaś bardzo długą fraze, wówczas wygeneruje bardzo długi link. Chociaż akurat pole gdzie się wpisuje tekst jest statyczne (czyli nie jest przez JS obrabiane), wiec powinno pujść metodą POST - muszę to sprawdzić.
Co do przekazywania tych zmiennych do osobnego formularza ukrytego, jest to jakieś rozwiązanie, ale nieobejdzie się z utworzenieniem kolejnego pliku w którym wygeneruje takowy formularz (no chyba, że podmiennie dane poprzez model DOM w obecnym formularzu - tylko nie jestem pewien jak to w praktyce zadziała) - z tym też pokombinuje (bo nie chce przekazywać danych po GET, bo tworzy to niezrozumiałe linki dla userów).

Wolałbym jednak rozwiązanie w tylu jednokierunkowego przekazania tych zmiennych bezpośrednio do wskazanego pliku, ale chyba się tego nie da tak zrobić.
Berg
Ale po co tworzyć formularz i go potem odczytywać? Tworzysz normalnie w DOM'ie formularz w stylu
  1. <form style="display: none;" id="ukryty_formularz" action="link gdzie dane mają zostać wysłane" method="POST">
  2. <inpu type="text" value="" name="pierwsze_pole" />
  3. <inpu type="text" value="" name="drugie_pole" />
  4. </form>


Potem po wywołaniu submit dla pierwszego formularza podstawiasz z niego dane do drugiego formularza po czym wykonujesz
[JAVASCRIPT] pobierz, plaintext
  1. $('#ukryty_formularz').submit();
[JAVASCRIPT] pobierz, plaintext


I tyle, przeglądarka automatycznie przekieruje użytkownika do strony podanej w 2 formularzu winksmiley.jpg
xajart
Okej dobra dzięki, więc użyje do tego DOM, poprostu nie byłem pewny czy te dane formularz przekaże. 
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.