Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] odczyt sesji
Forum PHP.pl > Forum > Przedszkole
d.stp
Mam problem, bo tworzę prosty skrypt w JS (jquery) i muszę użyć sesji, tylko nie wiem jak to zrobić, czy za pomocą PHP czy jQuery (plugin session).

W PHP jest problem tego typu, że cały skrypt mam w oddzielnym pliku js, a tam już nie użyję PHP... próbowałem na wiele sposobów, ale żaden nie chciał działać, np.:

  1. var test = '<?php echo test(); ?>';


Normalnie jak miałem kod skryptu JS w indexie to mi ten kod wyżej działał dobrze, ale jak przeniosłem kod JS do oddzielnego pliku już przestało działać i jak dam np. alert(test); to mi pokaże <?php echo test(); ?>

Sesje w JS próbowałem tak:

  1. $.session.set("test", "value");


i działa. Tworzy sesje taką jaką chcę, ale w innym miejscu w kodzie tworzę taką samą sesję tylko, że przez PHP i te wyniki nie są takie same... nazwy sesji na pewno takie same, ale wartości już nie.

I teraz nie wiem jak mam to zrobić, żeby było dobrze, bo używam też ajaxa i tam w pliku PHP jest taka sama sytuacja - sesje z PHP wyświetlę normalnie, ale sesje z jQuery już nie...
PrinceOfPersia
Cytat
Normalnie jak miałem kod skryptu JS w indexie to mi ten kod wyżej działał dobrze, ale jak przeniosłem kod JS do oddzielnego pliku już przestało działać i jak dam np. alert(test); to mi pokaże <?php echo test(); ?>

Inaczej zrób. W pliku głównym PHP zrób tak:
<script>
var test = '<?php echo test(); ?>';
</script>

a w pliku JS będziesz mógł korzystać z tej zmiennej.
d.stp
inaczej...

Mam 2 pliki:

- skrypt.js
- skrypt.php
- index.php

skrypt.js:

  1. if ($.session.get("test")) {
  2. var test = $.session.get("test");
  3. }
  4. else {
  5. $.session.set("test", "value");
  6. }
  7.  
  8. function wyslij() {
  9. $.post('./skrypt.php', {test:test}, function(){
  10. //...
  11. });
  12. }


skrypt.php:

  1. mysql_query("INSERT INTO `tabela` VALUES (null, 'TUTAJ TO CO W SESJI TEST');");


Mniej więcej tak to wygląda.


Ogólnie chodzi o to, że każdy po wejściu na stronę dostaje klucz, który jest zapisywany do sesji, a później coś wyświetlam dla tego użytkownika po kluczu z sesji.
Michael2318
Takie rzeczy wyciąga się ze skryptu przed wczytaniem pliku js. Przykładowo załóżmy że chcę z bazy wyciągnąć zawartość pola 'test' z bazy danych i przekazać to do java script:

plik common.php:

  1. <?php
  2. // łącze sie z baza danych
  3. $sql = "SELECT test FROM `tabela` WHERE id = 2";
  4. if ( !($result = mysql_query($sql)) )
  5. {
  6. die('error in sql<br>'.mysql_error());
  7. }
  8. $row = mysql_fetch_assoc($result);
  9.  
  10. $szukana_zmiena = $row['test'];
  11. ?>


plik page_header.php:
  1. <?php
  2. include('common.php');
  3. ?>
  4. <!DOCTYPE HTML>
  5. <html>
  6. <head>
  7. <script>
  8. var szukana_zmienna = <? echo $szukana_zmienna; ?>;
  9. </script>
  10. <script type="text/javascript" src="moj_scrypt.js">
  11. </head>
  12. <body>
  13. costam
  14. </body>
  15. </html>


plik moj_scrypt.js:
Kod
alert(szukana_zmienna); // tutaj już masz odbiór tej zmiennej, robisz z nia co chcesz
d.stp
Tak, tylko że ja te dane pobieram automatycznie co ileś sekund więc Twój sposób odpada smile.gif
Michael2318
ajax.
d.stp
Dzięki wink.gif

Jeszcze jedno pytanie

Jak wyświetlić to co pobrałem ajaxem żebym mógł później tego użyć?

  1. function get_id() {
  2. $.post('../test.php', {stage:"get_id"}, function(data) {
  3. return data;
  4. });
  5. }


i dalej w kodzie mam:

var _id = get_id();

ale to nie działa ;/
Michael2318
Jeśli chcesz odbierać wyniki od php i przekazywać je do js za pomocą ajax to osobiście polecam json ! Sam ostatnio poznawałem to środowisko, pisząc powiadomienia al'a facebook i jestem pod wrazeniem smile.gif
d.stp
Myślałem o tym, ale nigdy nie używałem JSON, a nie mam czasu żeby to ogarniać.

Nie ma prostszego sposobu?
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.