• 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

Object Storage Arubacloud
0 głosów
686 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,190 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,190 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,190 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,190 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,190 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,084 wizyt
0 głosów
1 odpowiedź 936 wizyt
pytanie zadane 30 października 2016 w JavaScript przez niezalogowany
0 głosów
2 odpowiedzi 492 wizyt

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...