Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [advAJAX][php] Jak wyslac formularz przy pomocy advAjAXA
Forum PHP.pl > Forum > Przedszkole
puz219
Witam.

Zaczynam właśnie swoją przygodę z AJAXEM i próbuję przesłać dane z formularza, lecz nie wiem co dopisać w funkcji wysyłającej dane, żeby wysłać dane do pliku search.php metodą POST.

Oto co wykombinowałem:
  1. <form id="search_form">
  2. <input type="hidden" name="sid" id="sid" value="<?php echo SendID($_id); ?>" />
  3. <input type="text" name="q" id="search_form" size="50" />
  4. <select name="what" id="what">
  5. <option value="1">osoba</option>
  6. <option value="2">miejscowość</option>
  7. <option value="3">kraj</option>
  8. </select>&nbsp;<input type="button" value="Wyszukaj" onclick="get_search()">
  9. </form>


A to skrypt funkcji get_search()
  1. <?php
  2. <script type="text/javascript">
  3. function get_search()
  4. {
  5. advAJAX.submit(document.getElementById("search_form"), {
  6. onInitialization : function() { document.getElementById("search_results").innerHTML = "<img src=\"images/loading.gif\">"; },
  7. onSuccess : function(obj) { document.getElementById("search_results").innerHTML = obj.responseText },
  8. onError : function(obj) { alert("Error: " + obj.status); }
  9.  
  10. };
  11. }
  12. </script>
  13. ?>


Oczywiście dałem na początku (w META)
  1. <script type="text/javascript" src="advajax.js"></script>


Problem polega na tym, że chcialbym, żeby formularz był przesyłany do pliku search.php metodą post i wyświetlony w divie id="search_results".

Nie wiem, co i jak dopisać do funkcji get_search(), żeby osiągnąć upragniony efekt.

Bardzo prosiłbym o pomoc, z góry dzięki.

Pozdrawiam.

P.S. Szukałem oczywiście odpowiedzi na ten temat, ale nic przydatnego nie znalazłem, szukałem głónie na stronie advajaxa, ale tamtejszy manual jest ubogi, pytałem też google, ale nic sensownego mi nie odpowiedział.
arecki
Pierwsze primo: do tagu <form> dodaj method="post" i będzie działało przez POST smile.gif
Drugie primo: brakuje zamknięcia nawiasu wywołania funkcji advAJAX.submit() (gdzie ? jako zadanie domowe polecam znaleźć samemu smile.gif)
Trzecie primo: A skąd AJAX ma wiedzieć gdzie ma wysłać dane ? Może by tak action w <form> też ustawić ?
Czwarte primo: manual na stronie Anakina jest w porządku. Raczej trzeba sobie podstawy formularzy przypomnieć smile.gif
puz219
No dobra dodałem method i action do forma
  1. <form id="search_form" method="POST" action="search.php">

domknąłem nawias
  1. <script type="text/javascript">
  2. function get_search()
  3. {
  4. advAJAX.submit(document.getElementById("search_form")), {
  5. onInitialization : function() { document.getElementById("search_results").innerHTML = "<img src=\"images/loading.gif\">"; },
  6. onSuccess : function(obj) { document.getElementById("search_results").innerHTML = obj.responseText },
  7. onError : function(obj) { alert("Error: " + obj.status); }
  8.  
  9. };
  10. }

i jak klikam na Wyszukaj, to nadal nic sie nie dzieje.

Co może być przyczyną??

Pomóżcie
arecki
Zainstaluj sobie firefoxa i firebuga do niego i będziesz wiedział gdzie jest problem. Jak dla mnie to mogłeś tego nawiasu nie domykać bo nie trafiłeś z domknięciem. Porównaj sobie Twoje wywołanie z manualem na stronie advajax.anakin.us i będziesz wiedział gdzie leży problem.
puz219
No to jeszcze mam kilka pytań odnośnie formularzy, a właściwie kilka problemów z nimi.

Pierwszy problem jest taki, że jak wpiszę coś do pola wyszukiwania i nacisnę klawisz enter, to formularz wykonuje sie w standardowy sposób, bez ajaxa, czyli przeładowuje mi stronę i wysyła dane.

Kolejny problem jest taki, że jak wpiszę coś, kliknę wyszukaj, to wtedy ładnie wczyta do diva, a jeśli potem znów coś wpisze do okna wyszukiwarki i kliknę wyszukaj, to znów wysyła formularz w tradycyjny sposób bez ajaxa.

A 3 problem, który zauważyłem występuje w IE7, a mianowicie, jeśli wpiszę coś do okna wyszukiwania, kliknę wyszukaj, to ładnie wczytuje do diva, ale po jakiejś sekundzie znów samo wysyła formularz i to jeszcze w tradycyjny sposób i widzę tylko napis, że wyrażenie jest za krótkie.

Proszę o pomoc, jak rozwiązać te problemy.

Pozdrawiam

//EDIT: Ostatnie dwa problemy częściowo rozwiązałem, zmieniałem assign() na sumit() i w formularzu dałem type=button zamiast type=sumbit, lecz nadal pozostaje taki problem, że jak wpisze coś w okno wyszukiwania i nacisnę klawisz enter, to formularz wykonuje się w standardowy sposób.

Jak temu zaradzić.

Proszę o pomoc
arecki
Dodaj do pola input zdarzenie "onchange" uruchamiające wysyłanie przez AJAX'a i powinno działać.
puz219
dodałem do pola <input type="text" />, czyli tego, w którym wpisuje tekst do wyszukania zdarzenie onchange i w ogóle nie działa, znaczy jak coś wpiszę i nacisnę enter, to pokazuje obrazek lądowania w divie, do którego ma wszytać rezultat, ale wynik już normalnie pokazuje, znaczy nawet nie pokazuje, wygląda tak, jak by nie przesłało żadnych danych, piszę, że szukany wyraz jest za krótki.
arecki
Pokaż kod bo nie domyślę się co wpisałeś do "onchange" smile.gif (pokaż całość)
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.