Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP][AJAX] Przesyłanie zmiennej z js do php
Forum PHP.pl > Forum > Przedszkole
Terrorizer
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. ?>
Turson
Otworz w konsoli ajaxowy request i zobacz co idzie w nagłówku
rad11
A przy okazji zajrzyj tutaj:

ajax

i idz z biegiem czasu i technologia.
Terrorizer
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
Turson
Ale komentarze idą GETem a nie POSTem...
Terrorizer
Mógłbym zapytać z czego to wynika? Myślałem ,że skoro używam $.post to muszą iść postem biggrin.gif
viking
A to?
  1. xmlhttp.open("GET", "comments.php?id=" + photoid, true);


Ogarnij trochę ten skrypt. Albo goły JS, albo Jquery.
Terrorizer
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
Turson
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
Terrorizer
Przepraszam za niedokładny opis. Właśnie edytowałem pierwszy post i zaznaczyłem co jest w jakim pliku
Turson
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.
Terrorizer
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
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.