Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie danych z formularza...
Forum PHP.pl > Forum > XML, AJAX
lukesh
Witam!

Chciałbym zapytać, jak będzie wyglądał skrypt, który prześle dane z formularza metodą POST do dowolnego pliku, nie przeładowując przy tym strony?

Dla przykładu, prosty formularz:

  1. <form method="post" action="akcja.php">
  2. <input type="text" name="nazwa">
  3. <input type="submit" value="OK">
  4. </form>


Standardowo, przeglądarka przejdzie na stronę akcja.php, gdzie zawartość pola "nazwa" zostanie przekazana.

Jak tego uniknąć? Chodzi mi głównie o skrypt JS, który prześle tę informację do pliku akcja.php i wyświetli plik akcja.php, który może wyglądać np. tak:

  1. <?php
  2. echo "$nazwa";
  3. ?>


Pozdrawiam,
z góry dzięki za pomoc!
kriqs
dzial jest dobry wiec wiesz czego szukasz ale ci sie nie chce smile.gif poszukaj o "advAjax" znajdziesz napewno smile.gif

pozdrawiam
lukesh
Witam ponownie!

Nie interesują mnie żadne gotowe AJAKSY, jak np. advAjax czy mintAjax... Chciałem zrobić coś swojego, aby użytkownik nie musiał pobierać pliku z niepotrzebnymi mu do niczego funkcjami...

Przeszukałem trochę internat i na podstawie stron: http://developer.mozilla.org/pl/docs/AJAX:Na_pocz%C4%85tek i http://www.captain.at/howto-ajax-form-post-request.php udało mi się stworzyć prosty skrypt, który przesyła dane z formularza do pliku PHP, nieprzechodząc do kolejnej strony...

Oto kod pliku html:

  1. <script type="text/javascript" language="javascript">
  2. var http_request = false;
  3. function makePOSTRequest(url, parameters) {
  4. http_request = false;
  5. if (window.XMLHttpRequest) {
  6. http_request = new XMLHttpRequest();
  7. if (http_request.overrideMimeType) {
  8. http_request.overrideMimeType('text/html');
  9. }
  10. } else if (window.ActiveXObject) {
  11. try {
  12. http_request = new ActiveXObject("Msxml2.XMLHTTP");
  13. } catch (e) {
  14. try {
  15. http_request = new ActiveXObject("Microsoft.XMLHTTP");
  16. } catch (e) {}
  17. }
  18. }
  19.  
  20. http_request.onreadystatechange = function(){
  21. if (http_request.readyState == 1) {
  22. document.getElementById('div').innerHTML = "Ładowanie...";
  23. }
  24. if (http_request.readyState == 4) {
  25. if (http_request.status == 200) {
  26. result = http_request.responseText;
  27. document.getElementById('div').innerHTML = result;
  28. }
  29. else {
  30. document.getElementById('div').innerHTML = "Wystąpił błąd!";
  31. }
  32. }
  33. };
  34.  
  35. http_request.open('POST', url, true);
  36. http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  37. http_request.send(parameters);
  38.  
  39. }
  40.  
  41. function get() {
  42. var dane = "tekst=" + encodeURIComponent( document.getElementById("tekst").value );
  43. makePOSTRequest('post.php', dane);
  44. }
  45. </head>
  46. <form action="java script:get();">
  47. <textarea id="tekst"></textarea><br>
  48. <input type="submit" name="button" value="Wyślij">
  49. </form>
  50. <br>
  51. Tekst: <div id="div"></div>
  52. </body>
  53. </html>


I plik PHP (post.php):

  1. <?
  2. echo "$tekst";
  3. ?>


Wszystko działa tak, jak powinno, ale nie jestem do końca pewien, czy kod jest dobrze napisany... Nigdy wcześniej nie miałem styczności z JS, nie modyfikowałem żadnego innego kodu, nie mam o tym najmniejszego pojęcia... Ten kod starałem się napisać intuicyjnie, myśląc logicznie... Chyba się udało. smile.gif Bynajmniej - proszę o jakieś komentarze.

Pozdrawiam!
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.