-
1. Data: 2011-12-19 14:40:40
Temat: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: "S" <a...@w...pl>
Witam
Mam taki problem. Liczę, że może ktoś z szanownych grupowiczów pomoże.
Mam formularz który kieruje do platnosci.pl (choć to chyba nie ma znaczenia
gdzie, chodzi o to, ze na zewnątrz)
Muszę rzecz jasna wysłać ten formularz pod ten adres ale jednocześnie muszę
odczytać z niego dane i zapisać do bazy danych.
Problem w tym, że nie mogę tych dwóch rzeczy zrobić jednocześnie w jednym
kroku.
Próbowałem w jquery
('#payform').submit(function() {
$.post("ajax/get_post_data_register_for_pay.php",
$("#payform").serialize());
});
Niestety do pliku php nic "nie leci", formularz jest przekierowany na stronę
platnosci.pl
Co dziwne jeśli ten formularz nie wysyłam pod link zewnętrzny tylko dam w
action aktualny adres powyższy kod działa.
Nie wiem, może zmęcznie, może się zakręciłem ale nie mogę nic wykombinować
jak tu po kliknięciu send zapisać sobie w tle dane z formularza do bazy i
jednocześnie przejść do platnosci.pl
Będę wdzięczny za pomoc i podpowiedź. Może ktoś już rozwiązywał podobny
problem
z góry dziękuję i pozdrawiam
Sławek
-
2. Data: 2011-12-19 21:03:44
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: HARY <p...@g...com>
On 19 Gru, 15:40, "S" <a...@w...pl> wrote:
> Mam formularz który kieruje do platnosci.pl (choć to chyba nie ma znaczenia
> gdzie, chodzi o to, ze na zewnątrz)
> Muszę rzecz jasna wysłać ten formularz pod ten adres ale jednocześnie muszę
> odczytać z niego dane i zapisać do bazy danych.
> Problem w tym, że nie mogę tych dwóch rzeczy zrobić jednocześnie w jednym
> kroku.
A muszą być jednocześnie?
Jak dla mnie, to prawidłowa kolejność działań powinna być taka:
wysyłasz dane do siebie, zapisujesz do bazy danych, komunikujesz się z
platnosci.pl, wyniki transakcji odsyłasz klientowi.
HARY
-
3. Data: 2011-12-20 02:07:58
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: Exe Very Cute <k...@p...onIet.pl>
W dniu 2011-12-19 15:40, S pisze:
> Muszę rzecz jasna wysłać ten formularz pod ten adres ale jednocześnie
> muszę odczytać z niego dane i zapisać do bazy danych.
> Problem w tym, że nie mogę tych dwóch rzeczy zrobić jednocześnie w
> jednym kroku.
Ja to realizuję tak, że funkcja onSubmit zwraca do formularza False - to
po pierwsze. Jeżeli tego nie zrobię to zmiana GET/POST spowoduje
przerwanie żądania XHR. Dopiero po zakończonym żądaniu wysyłam formularz
usuwając funkcję z onSubmit i robiąc forma.submit();
Osobnym problemem jest brak obsługi JS po stronie klienta...
Pozdr
Exe Very Cute
-
4. Data: 2011-12-20 08:29:41
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: "S" <a...@w...pl>
>A muszą być jednocześnie?
>Jak dla mnie, to prawidłowa kolejność działań powinna być taka:
>wysyłasz dane do siebie, zapisujesz do bazy danych, komunikujesz się z
>platnosci.pl, wyniki transakcji odsyłasz klientowi.
Niestety muszą być jednocześnie. Na ogół też tak robię, że wpierw zapisuje
do bazy a później przechodzę do płatności ale w tym wypadku taki jest wymóg
projektowy:(
Sławek
-
5. Data: 2011-12-20 08:34:43
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: "S" <a...@w...pl>
>Użytkownik "Exe Very Cute" napisał w wiadomości grup
>dyskusyjnych:jcoqlf$pdn$...@n...dialog.net.pl...
>W dniu 2011-12-19 15:40, S pisze:
>Ja to realizuję tak, że funkcja onSubmit zwraca do formularza False - to po
>pierwsze. Jeżeli tego nie zrobię to zmiana GET/POST spowoduje przerwanie
>żądania XHR. Dopiero po zakończonym żądaniu wysyłam formularz usuwając
>funkcję z onSubmit i robiąc forma.submit();
>Osobnym problemem jest brak obsługi JS po stronie klienta...
Dzięki za podpowiedź choć przyznam szczerze nie do końca jakoś widzę to
działanie.
Jak rozumiem mam najpierw przerwać wysyłanie formularza, obsłużyć ajax i na
koniec wysłać formularz?
Naprawdę nie ma sposobu aby to jakoś w JQuery zrobić żeby to co ma iść do
bazy poszło a formularz przeszedł na platnosci.pl swoją drogą?
I co oznacza brak obsługi JS? Przy takiej akcji nie będzie obsługi JS? To
trochę by mi też pomieszało bo walidację formularza mam w JS i chyba wtedy
przestanie ona działać:(
dzięki i pozdrawiam
Sławek
-
6. Data: 2011-12-20 10:06:09
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: Exe Very Cute <k...@p...onIet.pl>
W dniu 2011-12-20 09:34, S pisze:
> Jak rozumiem mam najpierw przerwać wysyłanie formularza, obsłużyć ajax i
> na koniec wysłać formularz?
Nie tyle przerwać co w ogóle nie wysyłać formularza.
sprawdź sobie:
<form action="" name="dupa" onsubmit="return false;">
<button type="submit">wyślij</button>
<form>
> Naprawdę nie ma sposobu aby to jakoś w JQuery zrobić żeby to co ma iść
> do bazy poszło a formularz przeszedł na platnosci.pl swoją drogą?
Ależ dokładnie jak opisałem - to będzie tak działać. No, może nie do
końca, bo najpierw musi zostać zakończony XHR. Przyczyna jest banalna -
jeżeli jesteś na stronie X i tam jakiś AJAX się męczy w tle, to
przejście ze strony X na stronę Y musi przecież zakończyć działanie
wszelkich skryptów (w tym AJAX) na stronie X. Dlatego że na przykład:
- i tak nie będzie już gdzie zwrócić wyniku XHR, bo strona X już została
zamknięta
- po 2 godzinach chodzenia po necie miałbyś kilka wiszących sesji XHR w
przeglądarce
Więc w momencie gdy wysyłasz formularz do platnosci.pl Twój skrypt
zapisujący przestaje działać. Dlatego nie możesz tego wysyłać w tym
samym momencie. XHR musi być pierwszy w kolejce.
> I co oznacza brak obsługi JS? Przy takiej akcji nie będzie obsługi JS?
> To trochę by mi też pomieszało bo walidację formularza mam w JS i chyba
> wtedy przestanie ona działać:(
Nie o to mi chodziło. Jeżeli ktoś ma wyłączoną obsługę JS to wtedy nie
ma także XHR, a więc w ogóle nie zapiszesz danych.
Pozdr
Exe Very Cute
-
7. Data: 2011-12-20 10:24:42
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: "S" <a...@w...pl>
-----Oryginalna wiadomość-----
>From: Exe Very Cute Sent: Tuesday, December 20, 2011 11:06 AM Newsgroups:
>pl.comp.www Subject: Re: formularz wysłanie i jednoczesne odczytanie
>zawartości ajax/jquery
>W dniu 2011-12-20 09:34, S pisze:
>
>> Jak rozumiem mam najpierw przerwać wysyłanie formularza, obsłużyć ajax i
>> na koniec wysłać formularz?
>>Nie tyle przerwać co w ogóle nie wysyłać formularza.
Jeszcze raz dzięki za pomoc.
Tak, zrozumiałem o co Ci chodzi i faktycznie przecież innego wyjścia nie ma
jak przerwać wysłanie formularza i obsłużyć ajax.
Wydumałem coś takiego jquery
$('#payform2').submit(function() {
$.loader({
className:"loader_class",
content:''
});
$.post("ajax/get_post_data_register_for_pay.php",
$("#payform2").serialize(),function(){
$('#payform2').attr('id', 'payform');
});
return false;
});
I faktycznie to wysyła mi ajaxem dane do skryptu php (wprawdzie nie
sprawdziłem jeszcze jak bo na sztywno sobie wbiłem w tym php ale się dzieje
i chyba jak już wysyła to normalnie obsłuże je postem)
Problem teraz w tym jak ponownie uruchomić formularz aby poszedł do
platności.pl
Wykombinowałem, że aby nie zapętlać to sobie zmienie id formularza
$('#payform2').attr('id', 'payform');
i wywołam jakąś akcję dla #payform
Mam nadzieję, że jest w jquery jakieś zdarzenie które z automatu odpali
wysyłanie formularza. Jak na razie to udało mi się tylko zapętylić sobiąc
ponownie sybmit dla payform2 ale to jakby logiczne.
Trzeba chyba dać też jakąś detekcję czy istniej już #payform bo jeśli po
prostu wpiszę akcję dla #payform to dostaję error
Nie wiem może źle myślę ala taka logika rozwiązania tego problemu mi się
nasuwa.
pozdrawiam
Sławek
-
8. Data: 2011-12-20 10:30:53
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: Exe Very Cute <k...@p...onIet.pl>
W dniu 2011-12-20 11:24, S pisze:
> Wykombinowałem, że aby nie zapętlać to sobie zmienie id formularza
Lepiej nic tam nie zapętlaj... http://api.jquery.com/ajaxComplete/
> Mam nadzieję, że jest w jquery jakieś zdarzenie które z automatu odpali
> wysyłanie formularza.
W JS to jest po prostu document.getElementById('id_mojej_formy').submit();
W jQuery pewnie $('#id_mojej_formy').submit();
Pozdr
Exe Very Cute
-
9. Data: 2011-12-20 11:32:22
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: "S" <a...@w...pl>
>Użytkownik "Exe Very Cute" napisał w wiadomości grup
>dyskusyjnych:jcpo4c$7j1$...@n...dialog.net.pl...
>W dniu 2011-12-20 11:24, S pisze:
>> Wykombinowałem, że aby nie zapętlać to sobie zmienie id formularza
>Lepiej nic tam nie zapętlaj... http://api.jquery.com/ajaxComplete/
>> Mam nadzieję, że jest w jquery jakieś zdarzenie które z automatu odpali
>> wysyłanie formularza.
>W JS to jest po prostu document.getElementById('id_mojej_formy').submit();
>W jQuery pewnie $('#id_mojej_formy').submit();
Szczerze mówiąc wymiękłem. Chciałem to zrobić elegancko ale się nie dało.
Doszedł problem u mnie z walidacją też w jquery i jak zrobiłem submit to
skrypt się uruchamiał nawet gdy walidacja przebiegła niepomyślnie.
W końcu doszedłem do wniosku, że może wywołam tego ajax dla innego zdarzenia
i faktycznie zrobiłem dla .click(). Fakt, ze za każdym kliknięciem lecą dane
i jest to mało elegancje ale dzięki ukrytemu polu formularza wiem, że to
ciągle te same dane i jeśli rekord jest w bazie to update jeśli nie ma to
insert. Mało eleganckie ale eleganckie rozwiązanie chyba jest zbyt
skomplikowane. Przynajmniej dla mnie:)
Jeszcze raz dziękuję Ci za pomoc.
pozdrawiam
Sławek
-
10. Data: 2011-12-20 18:50:10
Temat: Re: formularz wysłanie i jednoczesne odczytanie zawartości ajax/jquery
Od: NotBear <p...@i...pl>
W dniu 2011-12-20 12:32, S pisze:
>> Lepiej nic tam nie zapętlaj... http://api.jquery.com/ajaxComplete/
> Szczerze mówiąc wymiękłem. Chciałem to zrobić elegancko ale się nie
> dało.
Pokombinuj tutaj jeszcze. Exe Very Cute powyzej sugerowal zaczekac az
sie AJAX wykona i dopiero wtedy w tzw. callbacku uruchomic wysylke.
Ja bym tu jeszcze rozpatrzyl mozliwosc wystapienia bledu i nie
rozpoczynal wtedy platnosci, czyli zamiast ajaxComplete:
http://api.jquery.com/ajaxSuccess/ - gdy ok
http://api.jquery.com/ajaxError/ - gdy nie ok
> Doszedł problem u mnie z walidacją też w jquery i jak zrobiłem
> submit to skrypt się uruchamiał nawet gdy walidacja przebiegła
> niepomyślnie.
if (!walidacjaWJQuery()) {
formularz.submit();
}
Albo takie stare zaklecie jesli walidacja jest wcisnieta w atrybucie
/onsubmit/:
if(formularz.onsubmit && formularz.onsubmit()){
formularz.submit();
}
--
NotBear