Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP][AJAX] Przesyłanie zmiennej z js do php
Terrorizer
post 23.12.2014, 04:37:04
Post #1





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

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


Mam na stronie zdjęcia, a pod każdym z nich jest link "komentarze".
Po jego kliknięciu otwiera się okno popup oraz onclick uruchamiający ajax.
Ajax odpala skrypt pobierający komentarze z bazy danych po czym je odbiera.
Teraz chciałbym z tego skryptu js, przesłać jakoś zmienną x z komentarzami znowu do skryptu php z popupem znajdującego się na tej samej stronie.
Niestety wciąż pokazuje się informacja, że "variable x is undefined"
To responseText na 100% zawiera stringi komentarzy, natomiast całe to przesłanie jquerowym postem coś nie śmiga

plik main.php:
  1. <?php
  2. echo "<a href='#' class='my-button' onclick='komenty(".$photoid.")'>komentarze</a>";
  3. $x = $_POST['x'];
  4. echo $x;
  5. ?>

też plik main.php:
  1. <script>
  2. function komenty(photoid) {
  3. var xmlhttp=new window.XMLHttpRequest();
  4. xmlhttp.onreadystatechange=function() {
  5. if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  6. var x = xmlhttp.responseText;
  7. $.post('main.php', {x: x});
  8. }
  9. }
  10. xmlhttp.open("GET", "comments.php?id=" + photoid, true);
  11. xmlhttp.send();
  12. }
  13. </script>

plik comments.php:
  1. <?php
  2. ini_set('display_errors','1');
  3.  
  4. $photoid = $_GET['id'];
  5. $allcomments = mysql_query('SELECT comment FROM comments WHERE photoid = "' .$photoid. '" ') or die(mysql_error());
  6. while ($numcomments = mysql_fetch_assoc($allcomments)){
  7. echo $numcomments['comment'];
  8. }
  9. ?>


Ten post edytował Terrorizer 23.12.2014, 16:56:40
Go to the top of the page
+Quote Post
Turson
post 23.12.2014, 07:43:56
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Otworz w konsoli ajaxowy request i zobacz co idzie w nagłówku
Go to the top of the page
+Quote Post
rad11
post 23.12.2014, 09:06:00
Post #3





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


A przy okazji zajrzyj tutaj:

ajax

i idz z biegiem czasu i technologia.
Go to the top of the page
+Quote Post
Terrorizer
post 23.12.2014, 11:39:31
Post #4





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

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


Cytat(Turson @ 23.12.2014, 07:43:56 ) *
Otworz w konsoli ajaxowy request i zobacz co idzie w nagłówku

Nie bardzo wiem na co mam patrzeć tongue.gif Widzę w konsoli, że ajax łapie photoid(34) potem skacze kilkakrotnie po tych linijkach i wysyła zapytanie do skryptu. A potem nagle przerywa się działanie i wyskakuje że zmienna x zawiera komentarze i tyle
Go to the top of the page
+Quote Post
Turson
post 23.12.2014, 11:42:33
Post #5





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Ale komentarze idą GETem a nie POSTem...
Go to the top of the page
+Quote Post
Terrorizer
post 23.12.2014, 12:19:47
Post #6





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

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


Mógłbym zapytać z czego to wynika? Myślałem ,że skoro używam $.post to muszą iść postem biggrin.gif
Go to the top of the page
+Quote Post
viking
post 23.12.2014, 13:38:11
Post #7





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


A to?
  1. xmlhttp.open("GET", "comments.php?id=" + photoid, true);


Ogarnij trochę ten skrypt. Albo goły JS, albo Jquery.


--------------------
Go to the top of the page
+Quote Post
Terrorizer
post 23.12.2014, 13:55:33
Post #8





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

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


Wszystko co robię zawarte jest w main.php , a comments.php to tylko skrypt pobierający komentarze z bazy danych.
Czyli: Z main.php ze skryptu php leci onclick do ajaxa, który ściąga komentarze z comments.php a potem ten cały jquery powinien je przesłać spowrotem do php w main.php
Go to the top of the page
+Quote Post
Turson
post 23.12.2014, 16:18:08
Post #9





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Ale masz GETa do comments.php w tej samej funkcji. Kod pliku php z pierwszego posta należy do którego? Jak co comments.php to przecież wysyłasz get a odbierasz post
Go to the top of the page
+Quote Post
Terrorizer
post 23.12.2014, 16:57:24
Post #10





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

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


Przepraszam za niedokładny opis. Właśnie edytowałem pierwszy post i zaznaczyłem co jest w jakim pliku

Ten post edytował Terrorizer 23.12.2014, 16:58:32
Go to the top of the page
+Quote Post
Turson
post 23.12.2014, 21:17:38
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Undefined variable wywala jak mniemam przy wejściu na stronę. Zauważ, że funkcja komenty() jest wywoływana na onclick i tam dopiero jest $.post wysyłający zmienną "x", więc jak ją przesyłasz to nie na tą samą stronę co jesteś, ale na inną. Na tą samą pod względem fizycznym, ale $.post to nowy request.
Go to the top of the page
+Quote Post
Terrorizer
post 23.12.2014, 21:50:24
Post #12





Grupa: Zarejestrowani
Postów: 345
Pomógł: 3
Dołączył: 31.03.2012

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


Masz rację.
Przerobiłem na get i "niby działa" jeśli wysyłam w postaci x: "jakiś string" to przechodzi normalnie
Natomiast jeśli ustawię x: x to nadal wywala undefined. W czym niby gorsza jest zmienna ze stringiem od stringu biggrin.gif?
Natomiast jeśli dam alert(x) to normalnie pokazuje wszystkie zawarte stringi
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: 20.06.2025 - 09:53