Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]+[AJAX]+[PHP] Jak przesłać dane z JS do PHP przy pomoxy AJAX'a
sooper
post 19.01.2012, 16:09:01
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.01.2008

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


Dzisiaj coś łatwego biggrin.gif

Mamy 2 pliki:

1. HTML (index.html)

  1. <head>
  2. <title>Tytuł</title>
  3. <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
  4. <script type="text/javascript">
  5. $(document).ready(function(){
  6. $('input[type=submit]').click(function(){
  7. $.ajax({
  8. type:"POST",
  9. url:"test.php",
  10. dataType: "text",
  11. data: {'a':'b'},
  12. success: function(data){
  13. $('#wynik').text(data);
  14. },
  15. error: function(){
  16. alert('Jakiś błąd');
  17. }
  18. });
  19. });
  20. });
  21. </script>
  22. </head>
  23. <body>
  24. <input type="submit" value="Wyslij" /><br />
  25. <div id="wynik"></div>
  26. <a href="test.php">Link do php</a>
  27. </body>
  28. </html>



Drugi php (test.php)

  1. <?php
  2. if(isset($_POST["a"]))
  3. {
  4. echo "Działa";
  5. }
  6.  
  7.  
  8. echo "zzz";
  9. ?>



Czy w taki sposób przesyła się dane z JS do PHP ?
Dlaczego po przejściu do test.php zmienna $_POST["a"] jest pusta ?
Po wciśnięciu submit w html wyświetla wszystko z PHP. Skrypt ma przesyłać dane z JS do PHP a tu chyba jest odwrotnie :/


Go to the top of the page
+Quote Post
zdemotywowany
post 19.01.2012, 16:12:01
Post #2





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

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


http://www.w3schools.com/ajax/ajax_aspphp.asp
Go to the top of the page
+Quote Post
sooper
post 19.01.2012, 19:31:34
Post #3





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.01.2008

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


OK zrobiłem coś takiego:

HTML

  1. <meta charset="utf-8" />
  2. <title>xxx</title>
  3.  
  4.  
  5. <script type="text/javascript"><!--
  6. $(document).ready(function() {
  7. $('#crs').submit(function() {
  8.  
  9. var nm = $('#crs #nm').val();
  10.  
  11. $.ajax({
  12. type: 'post',
  13. url: 'script.php',
  14. data: nm,
  15. beforeSend: function() {
  16.  
  17. $('#resp').html('Loading...');
  18. },
  19. timeout: 10000,
  20. error: function(xhr, status, error) { alert('Error: '+ xhr.status+ ' - '+ error); },
  21. success: function(response) { $('#resp').html(response); }
  22. });
  23.  
  24. return false;
  25. });
  26. });
  27. --></script>
  28.  
  29. </head>
  30. <div id="resp"></div>
  31.  
  32. <form action="script.php" method="post" id="crs">
  33.  
  34. Name: <input type="text" name="nm" id="nm" /><br />
  35.  
  36. <input type="submit" value="submit" />
  37. </form>
  38. </body>
  39. </html>



PHP
  1. <?php
  2.  
  3. if(isset($_POST['nm']) )
  4. {
  5.  
  6. $nm = $_POST['nm'];
  7.  
  8. $rehtml = '<h4>Hy '. $nm. '</h4>';
  9.  
  10. }
  11. else $rehtml = 'Invalid data';
  12.  
  13. echo $rehtml; // output (return) the response
  14.  
  15.  
  16. ?>



Problem w tym, że zamiast (<input type="text" name="nm" id="nm" /><br />) muszę mieć (<div id="nm">wartosc_wygenerowana_przez_js</div>)
Go to the top of the page
+Quote Post
zdemotywowany
post 19.01.2012, 19:45:37
Post #4





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

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


Chcesz wyświetlić to w inpucie?
Go to the top of the page
+Quote Post
sooper
post 19.01.2012, 20:15:14
Post #5





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.01.2008

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


Nie.

1. Javascript generuje mi jakąś wartość np 2. [val = '2';]

2. Przy pomocy (document.getElementById('iddiv').innerHTML = val;) wartość pojawia się w divie.

3. Chciałbym za pomocą AJAXA przekazać to do php. Bo z poziomu php chyba nie można odczytać wygenerowanej wartości div'a questionmark.gif
Go to the top of the page
+Quote Post
zdemotywowany
post 19.01.2012, 20:20:42
Post #6





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

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


1. Po losowanie odsyłam do Google'a.
2. Drugie chyba wiesz jak.
3. Jest na tej stronce co dałem wszystko.
Następnie JS odczytuje (wystarczy skopiować tamten przykład i zmienić wartość zmiennej) i wyświetla w div'ie.
Go to the top of the page
+Quote Post
sooper
post 19.01.2012, 21:02:32
Post #7





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.01.2008

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


Cytat(zdemotywowany @ 19.01.2012, 20:20:42 ) *
1. Po losowanie odsyłam do Google'a.
2. Drugie chyba wiesz jak.
3. Jest na tej stronce co dałem wszystko.
Następnie JS odczytuje (wystarczy skopiować tamten przykład i zmienić wartość zmiennej) i wyświetla w div'ie.



Może nieprecyzyjnie się wyraziłem, ale mam zrobione 'losowanie', wiem jak wynik wstawić do diva, ale nie wiem jak jego wartość przesłać do php przy pomocy submit.

Mam formularz:

  1. <form action="script.php" method="post" id="crs">
  2.  
  3. <input type="text" name="nm" id="nm" />
  4. <input type="text" pass="ps" id="ps" />
  5.  
  6. <div name="di" id="di">{WARTOŚĆ WSTAWIONA PRZEZ JS}</div>
  7.  
  8. <input type="submit" value="submit" />


Wartości z inputów są oczywiście wysyłane, a z diva niestety nie.

Byłem na stronce, którą podałeś i są tam przykłady zapytań do php przy pomocy ajaxa, a mi nie oto chodzi, tylko jak wysłać submitem wartość z diva do php smile.gif

Go to the top of the page
+Quote Post
zdemotywowany
post 19.01.2012, 21:04:52
Post #8





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

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


Tam nie może być submit a button to po pierwsze.
Po drugie korzystasz z funkcje getElementByID i wyciągasz dane z div'a. I w końcu na tej stronce masz jak je wysłać. I teraz już te przykłady na pewno będą pomocne.

EDIT: Jeszcze raz przeczytałem Twój post i nie wiem czy chcesz je wysłać AJAX'em czy nie. Mógłbyś się zdecydować.

Ten post edytował zdemotywowany 19.01.2012, 21:06:24
Go to the top of the page
+Quote Post
sooper
post 19.01.2012, 22:07:00
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.01.2008

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


To może napiszę do czego dążę, będzie chyba prościej dojść, jakiej metody lepiej użyć.


Załóżmy że mam formularz logowania, taki jak jest na tym forum.
Składa się on z 2 inputów ( Nazwa oraz hasło użytkownika)

  1. <input type="text" name="nazwa" id="nazwa" />
  2. <input type="text" name="haslo" id="haslo" />


Chciałbym do tego formularza dodać diva, gdzie jego wartość będzie generowana przez JS (generowanie mam już zrobione)

  1. <div name="test" id="test>{WARTOŚĆ Z JS}</div>


i na końcu wysłać wszystko submitem

  1. <input type="submit" value="submit" />


Po stronie php wartości z inputów odczytamy za pomocą $_POST[]

Jak odczytać wartość DIVA questionmark.gif

Mam nadzieje że teraz jest już jasne smile.gif
Go to the top of the page
+Quote Post
d3ut3r
post 20.01.2012, 05:35:00
Post #10





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


być może łatwiej zamiast DIV użyć po prostu:

  1. <input type="hidden" name="cosik" value="wartosc_z_js" />


wtedy po kliknięciu submit skrypt php prócz loginu i hasła będzie mógł odebrać również wartość zmiennej $_POST['cosik']


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
zdemotywowany
post 20.01.2012, 10:45:50
Post #11





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

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


Cytat(sooper @ 19.01.2012, 22:07:00 ) *
Jak odczytać wartość DIVA questionmark.gif


Temat mówi co innego... Z resztą Twoje posty też. Tak więc div'a nie prześlesz do php (albo może i prześlesz, ale się troszkę pomęczysz). Musisz tak jak kolega wyżej napisał wstawić to w inputa, którego nie będzie widać, a zostanie wysłany razem z formularzem.
Go to the top of the page
+Quote Post
sooper
post 20.01.2012, 11:41:08
Post #12





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 30.01.2008

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


Na chwilę obecną wysyłanie mam zrobione przez ukryty input, jednak taki input da się odkryć i zmienić jego wartość, dlatego myślałem od divie. Ogólnie doczytałem się, że właśnie ajaxem uda się wysłać wartości z js do php, dlatego pytałem jak to zrobić. Widocznie się nie zrozumieliśmy.

Gdyby jednak komuś przyszedł do głowy jakiś pomysł na wysłanie wartości przez diva lub za pomocą czegoś innego oprócz inputa, proszę pisać.

Kod
$(document).ready(function(){
$('input[type=submit]').click(function(){
$.ajax({
type:"POST",
url:"test.php",
dataType: "text",
data: {'a':'b'},
success: function(data){
$('#wynik').text(data);
},
error: function(){
alert('Jakiś błąd');
}
});
});
});


Dalej jednak nie wiem dlaczego ten skrypt nie działa. Wyraźnie jest napisane, że po akcji SUMBIT wartości powinny zostać wysłane i odczytane za pomocą $POST[]

Go to the top of the page
+Quote Post
zdemotywowany
post 20.01.2012, 11:47:38
Post #13





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 15.01.2012

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


Tak, AJAX'em możesz wysłać cały formularz bez przeładowania strony, div'a też możesz wysłać.
Go to the top of the page
+Quote Post
d3ut3r
post 21.01.2012, 01:36:32
Post #14





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

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


Cytat
jednak taki input da się odkryć i zmienić jego wartość


również można zmodyfikować całe zapytanie dlatego to po stronie php robi się walidację danych ponieważ to co do skryptu php jest wysyłane user może dowolnie modyfikować i umieszczenie tekstu w div nie poprawi w żadnym stopniu bezpieczeństwa skryptu.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
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: 3.05.2025 - 04:04