Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][JavaScript][PHP]Problem z transferem danych
castagir
post
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Witam

Chciałbym przesłać dane z JS do php. Próowałem to robić zwykłą metodą GET, POST a nawet próbowałem AJAX. Niestety nic. Próbowałem napisać to na podstawie przykładów z książki i z internetu

Tutaj jest treść:

Metoda GET:
  1. /* Załadowanie wszystkich funkcji i utworzenie zmiennych przechowujących informację o postępach instalacji */
  2. $(document).ready(function() {
  3. var postep;
  4. rozpocznijInstalacje();
  5. });
  6.  
  7. /* Funkcje niezbędne do przeprowadzenia dynamicznej instalacji ENDO */
  8. function rozpocznijInstalacje() {
  9. $('.rozpocznij').click(function() {
  10. var postep = 'krok1';
  11. $.get (
  12. "instalator.php",
  13. { postep: postep},
  14. function(data) {
  15. $('#pojemnikGlowny').html(data);
  16. }
  17. );
  18. });
  19. }

Sposób AJAX:
  1. /* Załadowanie wszystkich funkcji i utworzenie zmiennych przechowujących informację o postępach instalacji */
  2. $(document).ready(function() {
  3. var postep;
  4. rozpocznijInstalacje();
  5. });
  6.  
  7. /* Funkcje niezbędne do przeprowadzenia dynamicznej instalacji ENDO */
  8. function rozpocznijInstalacje() {
  9. $('.rozpocznij').click(function() {
  10. var postep = 'krok1';
  11. $.ajax ({
  12. type :"GET",
  13. url :"instalator.php",
  14. data :{
  15. postep: postep
  16. },
  17. complete(dane) {
  18. $('#pojemnikGlowny').html(dane);
  19. }
  20. });
  21. });
  22. }

Fragment kodu php, który ma przechwycić dane:
  1. // proces instalacji - otrzymywanie i zwracanie odpowiednich danych ze wzgledu na otrzymaną informacje, który krok jest właśnie wykonywany
  2. if($_GET['postep'] == 'krok1') {
  3. echo '<h1>Instalacja ENDO</h1><br />
  4. <h3>Krok 1.</h3>';
  5. }


Nie mam pojęcia co mogłem zrobić źle.
Z góry dziękuję za pomoc smile.gif
Go to the top of the page
+Quote Post
ilidir
post
Post #2





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


jezeli korzystasz z AJAXA to faktycznie wysyłasz swój "postep" odbierasz go w pliku instalator.php ale w żaden sposób wyniku czyli swojego ECHO nie wysyłasz spowrotem do Ajaxa smile.gif

poczytaj sobie artykuł Temat: JavaScriptMySQLPHP dynamiczne uzupelnianie - podałem tam swój przykład wykorzystania AJAX-a wraz z opisami.
Go to the top of the page
+Quote Post
castagir
post
Post #3





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Czyli uważasz, że powinienem odsyłać dane JSON'em? Bo nie rozumiem.

Gdy robiłem ćwiczenia z książki odsyłałem po prostu jako kod html i wszystko było dobrze. Nie rozumiem dlaczego teraz mi nic nie działa.
Go to the top of the page
+Quote Post
ilidir
post
Post #4





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


pytasz jak zorbić to AJAXEM więc ci pomagam smile.gif
Go to the top of the page
+Quote Post
castagir
post
Post #5





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Przepraszam. Zielony jeszcze jestem w JS.

Mógłbyś pokazać jak powinien wyglądać przykładowy skrypt PHP, który byłby odpowiedzialny za odesłanie danych?
Go to the top of the page
+Quote Post
ilidir
post
Post #6





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


tak jak jest to pokazane na przykładzie który ci wysłałem. Przypisujesz na przykład to co chcesz do zmiennej i przesyłasz jsonem.
Go to the top of the page
+Quote Post
castagir
post
Post #7





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Mam coś takiego. Jest na pewno źle, bo na stronie nadal nic nie rusza.

  1. if($_GET['postep'] == 'krok1') {
  2. $tresc = '<h1>Instalacja ENDO</h1><br />
  3. <h3>Krok 1.</h3>';
  4. echo json_encode($tresc);
  5. }
Go to the top of the page
+Quote Post
ilidir
post
Post #8





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


no a jak odbierasz te dane smile.gif pokaż kod nie będe wróżył z fusów.
Go to the top of the page
+Quote Post
castagir
post
Post #9





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Nic się nie zmieniło. Ciągle ten sam kod js

  1. /* Załadowanie wszystkich funkcji i utworzenie zmiennych przechowujących informację o postępach instalacji */
  2. $(document).ready(function() {
  3. var postep;
  4. rozpocznijInstalacje();
  5. });
  6.  
  7. /* Funkcje niezbędne do przeprowadzenia dynamicznej instalacji ENDO */
  8. function rozpocznijInstalacje() {
  9. $('.rozpocznij').click(function() {
  10. var postep = 'krok1';
  11. $.ajax ({
  12. type :"GET",
  13. url :"instalator.php",
  14. data :{
  15. postep: postep
  16. },
  17. complete(dane) {
  18. $('#pojemnikGlowny').html(dane);
  19. }
  20. });
  21. });
  22. }
Go to the top of the page
+Quote Post
trueblue
post
Post #10





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


complete: function(dane) {


--------------------
Go to the top of the page
+Quote Post
ilidir
post
Post #11





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


tutaj masz mój przykład wysyłania i odczytywania danych przesłanych przez json wystarczy go przerobić

  1. $.ajax({
  2. type: "POST",
  3. url: "wiad_ajax.php",
  4. dataType : 'json',
  5. data: {
  6. dana1 : miasto, //przypisanie zmiennych dowysylki
  7. dana2 : wybor,
  8. },
  9. success : function(json) {
  10. document.getElementById('div_rk_id').style.display="block"; //odblokowujemy widocznosc div rk
  11. var select_success = document.getElementById('select_rk_id'); //przypisanie do zmiennej wartosci elementu
  12. for (i=0;i<=json.length;i++)
  13. {
  14. var option_success = document.createElement("option"); //tworzymy obiekt option
  15. option_success.setAttribute("value", json[i]);
  16. option_success.text = ""+json[i]+""; //przypisujemy do niego odebrane wartosci z ajaxa
  17. select_success.appendChild(option_success); //dodanie stworzonego optiona do select
  18. }
  19. },
  20. error : function(error) {
  21. alert("Jest klops");
  22. }
  23. });


Proponuje ci jeszcze jeżeli tego nie masz to instalację FIRebuga w przegladarce on pokazeci co otrzymujesz i co wysyłasz AJAXEM smile.gif
Go to the top of the page
+Quote Post
castagir
post
Post #12





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Dobra. Jakoś się zmieniają elementy na stronie. Reaguje po naciśnieciu na przycisk, tylko jest problem taki, że nic się nie pokazuje. Tak jakby php nic nie odsyłało.


Co do tego skryptu JS to nie chce tego używać, bo chcę zrobi stronę bazującą tylko na jQuery.
Poza tym z takim skryptem przestaje nawet strona reagować:
  1. /* Załadowanie wszystkich funkcji i utworzenie zmiennych przechowujących informację o postępach instalacji */
  2. $(document).ready(function() {
  3. var postep;
  4. rozpocznijInstalacje();
  5. });
  6.  
  7. /* Funkcje niezbędne do przeprowadzenia dynamicznej instalacji ENDO */
  8. function rozpocznijInstalacje() {
  9. $('.rozpocznij').click(function() {
  10. var postep = 'krok1';
  11. $.ajax ({
  12. type :"GET",
  13. url :"instalka.php",
  14. data :{
  15. postep: postep
  16. },
  17. complete: function(dane) {
  18. var pojemnik = document.getElementById('pojemnikGlowny');
  19. pojemnik.innerHtml = dane;
  20. }
  21. });
  22. });
  23. }


Sądzę, że problem leży w php.
Co do firebug, mam go zainstalowanego ale w nim nie mogę znaleść tego co wysyła php, więc to na pewno wina php.

Ten post edytował castagir 28.02.2015, 13:30:50
Go to the top of the page
+Quote Post
ilidir
post
Post #13





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


jak rozumiem sprawdzałeś w firebugu pod opcją - > konsola questionmark.gif? i nic nie zwraca ?

Ten post edytował ilidir 28.02.2015, 13:33:20
Go to the top of the page
+Quote Post
castagir
post
Post #14





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Dobra, ten problem udało mi się rozwiązać, wkradła się literówka smile.gif
Lecz nic dalej.

Teraz już wiem. Nie wiem dlaczego, ale to co mi odsyła php zostaje zapisane poza html:

  1. <!DOCTYPE html>
  2. <title>ENDO - instalacja</title>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. <link rel="stylesheet" type="text/css" href="./css/style.css" />
  5. <script type="text/javascript" src="../jquery.js"></script>
  6. <script type="text/javascript" src="js_instalator.js"></script>
  7. </head>
  8. <img src="./css/logo_endo_duze.png" />
  9. <div id="pojemnikGlowny">
  10. <h1>Instalacja ENDO</h1><br />
  11. <p>Dziękujemy za wybranie naszej aplikacji do stworzenia swojej strony! ENDO jest aplikacją CMS umożliwiającą stworzenie portalu informacyjnego lub tematycznego, który zawiera w sobie takie moduły jak:
  12. <ul>
  13. <li>rejestracja kont użytkowników z rozbudowanym edytowalnym profilem</li>
  14. <li>wewnętrzna poczta, dla lepszej komunikacji między użytkownikami</li>
  15. <li>przeglądanie artykułów oraz edytor do ich pisania i redagowania</li>
  16. <li>rozbudowane forum z różnymi stopniami dostępu dla odwiedzających</li>
  17. <li>rozbudowany panel administratorski do pełnej kontroli nad witryną</li>
  18. <li>wewnętrze forum tylko dla administratorów</li>
  19. </ul></p>
  20. <input type="button" class="rozpocznij" value="Rozpocznij instalację" /></div>
  21. </body>
  22. </html><h1>Instalacja ENDO</h1><br />
  23. <h3>Krok 1.</h3>


Ten post edytował castagir 28.02.2015, 13:36:00
Go to the top of the page
+Quote Post
ilidir
post
Post #15





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


szczerze mówiąc teraz to ja nie wiem o co chodzi smile.gif - sory
Go to the top of the page
+Quote Post
castagir
post
Post #16





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


no nic. Dzieki za pomoc. Będę dalej kombinował biggrin.gif
Go to the top of the page
+Quote Post
ilidir
post
Post #17





Grupa: Zarejestrowani
Postów: 183
Pomógł: 14
Dołączył: 27.09.2014

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


znaczy się ja nie rozumiem tego co napisałeśsmile.gif
Go to the top of the page
+Quote Post
castagir
post
Post #18





Grupa: Zarejestrowani
Postów: 146
Pomógł: 3
Dołączył: 28.10.2014

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


Chodzi o ten fragment:

  1. </body>
  2. </html><h1>Instalacja ENDO</h1><br />
  3. <h3>Krok 1.</h3>


To powinno być w div'ie o id="pojemnikGlowny", a zamiast tego, pokazuje się to za znacznikiem zamykajacym </html>

PHP odsyła to co trzeba. Problemem jest teraz to, dlaczego JS nie wstawia otrzymanych danych do diva. Próbowałem także z append i efekt ten sam, tyle, ze poprzednia tresc nie zostaje skasowana.

Ten post edytował castagir 28.02.2015, 14:04:38
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 Aktualny czas: 21.08.2025 - 03:18