Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> asynchroniczne pobieranie danych z formularza, ajax i php
qbas-s
post 28.06.2009, 19:51:27
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


Witam,
nie wiem jak rozwiązać nast problem:
Mam sobie pewien formularza a w nim textbox'y o jakiś nazwach i identyfikatorach. Chciałbym aby po naciśnięciu buttona dane te zostały asynchronicznie pobrane( bardzo mi zależy na tym aby strona się nie przeładowywała). Potem dane mają być przekazane do skryptu php gdzie są analizowane i filtrowane a nast zależnie od wyniku wyświetlany odpowiedni komunikat przy formularzu. Wszystko ma być asynchroniczne.
Próbowałem już zrobić plik php a w nim skrypt do sprawdzania tego form. Na stronie formularza wczytywałem go poprzez AJAX'a ale też nie działa.
Jeśli zrobię to poprzez <form action="blablabla" method="post"> i w skrypcie php naskrobie co należy do obsługi tego to oczywiści działa ale mija się jednocześnie z moim założeniem.

Proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
erix
post 28.06.2009, 21:23:21
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Na stronie formularza wczytywałem go poprzez AJAX'a ale też nie działa.

Pokaż, jak go wczytywałeś.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
qbas-s
post 28.06.2009, 21:44:00
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


Kod
var XMLHttpRequestObject = false;
if (window.XMLHttpRequest)
{
    XMLHttpRequestObject = new XMLHttpRequest();
}else if (window.ActiveXObject)
{
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
function getData(dataSource, divID)
{
    if(XMLHttpRequestObject)
    {
        var obj = document.getElementById(divID);
        XMLHttpRequestObject.open("GET", dataSource);
      XMLHttpRequestObject.onreadystatechange = function ()
      {
        if (XMLHttpRequestObject.readyState == 4 &&
        XMLHttpRequestObject.status == 200)
        {
            obj.innerHTML = XMLHttpRequestObject.responseText;
        }
      }
      XMLHttpRequestObject.send(null);
    }
}




a potem w formularzu(oczywiście ten powyższy kod jest includowany wcześniej):
  1. <input type="button" onclick="getData('skrypt.php','jakisDIV')" />
Powód edycji: [erix] poprawiłem bbcode
Go to the top of the page
+Quote Post
erix
post 28.06.2009, 22:01:35
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A konsola błędów?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
qbas-s
post 28.06.2009, 22:06:23
Post #5





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


konsola nic nie krzyczy.
w skrypt.php mam do testowania coś takiego(testuje jeden textbox o name="test"):

if($test !="") echo'ok'; else echo':(';

oczywiście w textbox zawsze coś wpisuje
Go to the top of the page
+Quote Post
erix
post 28.06.2009, 22:15:55
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale przecież nie masz żadnej wysyłki formularza...

Poza tym, w skrypcie sprawdzającym korzystasz ze zmiennych tworzonych przez register_globals, które są zaniechane.

Zerknij, co masz w tablicy $_POST.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
qbas-s
post 28.06.2009, 22:29:39
Post #7





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


Właśnie nie wiem jak dokonać analizy formularza nie używając submit'a jednocześnie eliminująć przeładowanie strony
Go to the top of the page
+Quote Post
wookieb
post 28.06.2009, 22:31:45
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Dodajesz do niego zdarzenie onsubmit
Kod
<form method="post" action="..." onsubmit="return funkcja_ajax()">


Kod
funkcja_ajax()
{
//tutaj robisz sobie cos ajaxem badz sprawdzasz poprawnosc formularza.
// jak zwrocisz true zezwolisz na wysłanie formularza z przeładowaniem strony.
return false;
}


Ten post edytował wookieb 28.06.2009, 22:32:31


--------------------
Go to the top of the page
+Quote Post
qbas-s
post 29.06.2009, 11:13:27
Post #9





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


używając powyższej funkcji funkcja_ajaxa() wczytuje asynchronicznie plik php który ma sprawdzać formularz. Jak teraz pobrać za pomocą tego tego wczytanego skryptu dane wstukane do textboxów?
Go to the top of the page
+Quote Post
wookieb
post 29.06.2009, 11:15:39
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




tak samo jak sie odczytuje dane z pol formularza.
zobacz sobie tablice
Kod
document.forms[nazwa_formularza].elements

Badz poprostu odwoluje sie do pol po id. A tego to ucza w kazdym kursie js.


--------------------
Go to the top of the page
+Quote Post
qbas-s
post 29.06.2009, 14:40:49
Post #11





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


wiem jak z poziomu js to zrobić. jak to zrobić za pomocą php, bo przecież nie wysyłam danych poprzez formularz więc chyba metoda get lub post nie działa?
może pokaże istotny kod tego co chce zrobić. Do obsługi używam 3 plików:
rejestracja.php - czyli formularz rejestracyjny
modify.js - asynchroniczne pobierania zawartości plików
check_form_signup.php - prawie nic tam jeszcze nie ma ale ma za zadanie sprawdzić ten formularz

rejestracja.php
  1. <?php
  2. <script type="text/javascript" src="js/modify.js"></script>
  3. <form action="..." method="post" onsubmit="return getData2('logic/check_form_signup.php','test')">
  4. <span id=form_input>
  5.    <p>FORMULARZ REJESTRACYJNY
  6.    <p><input type=text maxlength=70 name=login><br/>
  7.    <p><input type=text maxlength=70><br/>
  8.    <p><input type=password maxlength=70><br/>
  9.    <p><input type=password maxlength=70><br/>
  10.    <p><img src="php/obrazek.php" class=img_pass>
  11.        <input type=text class=img_inp_pass><br />
  12.    
  13. </span>
  14. <span id=form_su_text>
  15.    
  16.    <p>Login<br><br>
  17.    E-mail<br><br>
  18.    HasĹ&#8218;o<br><br>
  19.    Powtorz hasĹ&#8218;o<br /><br />
  20.    Kod z obrazka
  21.    
  22. </span>
  23. <span id=accept_reg>
  24.    <p><input type=checkbox>.--- AkceptujÄ&#8482; <a href="">regulamin</a>|<a href="">politykÄ™ prywatnoĹ›ci</a></p>
  25. </span>
  26. <span id=accept_reg_bt>
  27.    <p><input type=submit value=Rejestruj></p>
  28. </span>
  29. </form>
  30. ?>




modify.js
------------------------
function getData2(dataSource, divID)
{
if(XMLHttpRequestObject)
{
var obj = document.getElementById(divID);
XMLHttpRequestObject.open("GET", dataSource);
XMLHttpRequestObject.onreadystatechange = function ()
{
if (XMLHttpRequestObject.readyState == 4 &&
XMLHttpRequestObject.status == 200)
{
obj.innerHTML = XMLHttpRequestObject.responseText;
}
}
XMLHttpRequestObject.send(null);
}
return false;
}



check_form_signup.php
----------------------------
  1. <?php
  2.  
  3.          
  4.  if($login != "") echo'skrypt działa'; else
  5.  echo'skrypt nie działa';
  6.  
  7. ?>
Go to the top of the page
+Quote Post
Fishu
post 29.06.2009, 18:22:21
Post #12





Grupa: Zarejestrowani
Postów: 192
Pomógł: 13
Dołączył: 16.11.2007
Skąd: Żory

Ostrzeżenie: (10%)
X----


chyba brakuje objektu o id "test" smile.gif
I jeszcze coś, jeżeli chcesz np. odbierać dane w php za pomocą metody GET to dodaj to do wywołanego pliku w js.
Tzn. zamiast
  1. XMLHttpRequestObject.open("GET", dataSource);

Daj:
  1. XMLHttpRequestObject.open("GET", dataSource + "?login=abc");


Ten post edytował Fishu 29.06.2009, 18:23:58


--------------------
"Źle czynisz, jeśli chwalisz, gorzej, jeśli ganisz rzecz, której dobrze nie znasz." - Leonardo Da Vinci

30.01.2009 - Mój 100 post.
Go to the top of the page
+Quote Post
qbas-s
post 30.06.2009, 12:49:04
Post #13





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

Ostrzeżenie: (0%)
-----


zapomniałem - obiekt o id="test" był i jest tylko że w index.php:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 15:38