• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Użycie zmiennej PHP SESSION w innym pliku JavaScript

0 głosów
1,474 wizyt
pytanie zadane 28 maja 2020 w JavaScript przez rijn Nowicjusz (220 p.)

Witam. Mam pytanie, czy jest sposób na ustawienie szerokości diva, wyciągając wartość ze zmiennej PHP innego pliku bez odświeżania strony? Mogę pokazać kod:

index.php

<script>
        function leftButton(nr_id)
        {       
            $('#' + 'odp' + nr_id).html('<div class="odpA-read" id="odpA' + nr_id +'"></div><div class="odpB-read" id="odpB' + nr_id +'"></div>');
            $('#' + 'odpA' + nr_id).load("odpA-glos.php", {id: nr_id});
            $('#' + 'odpB' + nr_id).load("odpB-read.php", {id: nr_id});
            var prA = '<?php echo $_SESSION["a"] ?>';
            var prB = '<?php echo $_SESSION["b"] ?>';
            $('#' + 'odpA' + nr_id).width(prA);
            $('#' + 'odpB' + nr_id).width(prB);
        };
    </script>

odpB-read.php

<?php
	session_start();
	include "connect.php";
	$id = $_POST['id'];

	$sql = "SELECT * FROM ankiety WHERE id= $id";
	$rezultat = mysqli_query($polaczenie, $sql);
	$wiersz = $rezultat->fetch_assoc(); 
	$b = $wiersz['glosB']."%";
	
    else echo $b."%";
	$_SESSION['b'] = $b."%";
?>

Problem w tym, że zmienna SESSION działa tylko za 1 razem, pozniej wartosc var prA i var prB nie zmienia się, a wolalbym, żeby zmieniala sie za kazdym wywolywaniem funkcji. Czy jest jakaś opcja żeby ta zmienna dynamicznei się zmieniala bez konieczności odswiezania strony np. za pomocą AJAXu? Będę wdzięczny za pomoc :) 

1 odpowiedź

+2 głosów
odpowiedź 28 maja 2020 przez ScriptyChris Mędrzec (190,170 p.)
wybrane 29 maja 2020 przez rijn
 
Najlepsza
Kod PHP wykonuje się na serwerze. Kod JavaScript (w tym przypadku) w przeglądarce. Żadna ze stron nie ma dostępu do kodu drugiej strony w momencie jego wykonywania. Owszem w kodzie PHP możesz dopisać do kodu JS dane ze zmiennych utworzonych w PHP, ale w momencie gdy przeglądarka pobierze i wykona kod JS, to od strony PHP nie masz do niego bezpośredniego dostępu - i vice-versa, JS nie ma bezpośredniego dostępu do PHP.

Żeby się komunikować, skorzystaj z Ajaxa (o którym wspomniałeś) lub np. wyślij ze strony uzupełniony formularz.
komentarz 28 maja 2020 przez rijn Nowicjusz (220 p.)
Dziękuję. Za pomocą AJAXu przekazuję zmienna id z JS do PHP, ale odwrotnie nie umiem niestety. Próbowałem za pomocą JSON encode/decode, ale nie wiem jak zrobić żeby odczytywac zmienną nie w tym samym pliku, tylko innym..
komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,170 p.)

Zmienną (a raczej jej wartość) z PHP do JS możesz przekazać w odpowiedzi na tego Ajaxa. Pokaż kod, którym próbujesz przekazać dane z PHP do JS.

nie wiem jak zrobić żeby odczytywac zmienną nie w tym samym pliku, tylko innym

Masz na myśli różne pliki PHP, czy JS? 

komentarz 28 maja 2020 przez rijn Nowicjusz (220 p.)

odpB-read.php

$js = array("A"=>$a, "B"=>$b);
$js = json_encode($js);

index.php (<script>)

var prA = <?php $obj = json_decode($js); echo $obj->a; ?>
var prB = <?php $obj = json_decode($js); echo $obj->b; ?>

oto co próbowałem, ale szukam czegos w rodzaju "$.ajax", tylko ze z PHP do JS. właśnie o taki kod mi chodziło z odczytywaniem, zeby dac "adres docelowy" zmiennej jak w $.ajax lub $,post 

 

 

komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,170 p.)

A gdzie masz miejsce odbioru Ajaxa w PHP? Tam możesz zwrócić (np. przez echo) wartość ze zmiennej PHP i JS to odbierze. Kod typu:

var prA = <?php $obj = json_decode($js); echo $obj->a; ?>

działa w jedną stronę, tzn. możesz nim stworzyć kod JS, który będzie zawierać wartości z PHP, ale w momencie gdy to trafia do przeglądarki, to PHP już nie ma do tego dostępu.

komentarz 28 maja 2020 przez rijn Nowicjusz (220 p.)
dziękuję, właśnie już rozumiem. a jak moglbym zrobic zeby wraz z danymi z db z pliku glosB-read.php aktualizować wartość zmiennej? myslalem nad "wypakowaniem" zmiennej do divu metodą .load a pozniej wrzucic do zmiennej js, ale niestety ile nie probowalem zmienna ta zostaje pusta, wiec zastanawiam sie nad alterantywa.
komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,170 p.)
Wysyłasz Ajaxa z przeglądarki na serwer. PHP wtedy może odpytać bazę danych, a zebrane dane odesłać do przeglądarki w zwrotce do tego samego Ajaxa.
komentarz 28 maja 2020 przez rijn Nowicjusz (220 p.)
a jak ma wygladac ajax "odbierajacy" dane? tak samo jak ten co wysyla?
komentarz 28 maja 2020 przez ScriptyChris Mędrzec (190,170 p.)
edycja 28 maja 2020 przez ScriptyChris

Całość wygląda mniej więcej tak.

Załóżmy, że w JS wysyłasz Ajaxa (posłużę się jQuery, bo o nim wspomniałeś i go używasz):

$.get('url/to/my/page?dataForPHP=helloFromJS', onSuccess);

w PHP odbierzesz to przez:

$ajaxData = $_GET['dataForPHP']; // $ajaxData = 'helloFromJS';

z PHP odsyłasz odpowiedź:

header("Content-type: application/json");
echo json_encode(['prop' => 'Some data for JS']);

JS ją odbiera i odczytuje z niej dane:

function onSuccess(data) {
    console.log(data.prop); // 'Some data for JS'
}

 

komentarz 29 maja 2020 przez rijn Nowicjusz (220 p.)
Dziękuję bardzo!!

Podobne pytania

+1 głos
3 odpowiedzi 1,325 wizyt
0 głosów
1 odpowiedź 1,208 wizyt
pytanie zadane 30 października 2016 w JavaScript przez niezalogowany
0 głosów
2 odpowiedzi 978 wizyt

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,326 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...