Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQuery][php] Przekazanie zmiennej, a sesja
k0b3
post
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Witam!

Przymusowo zapoznaje się z frameworkiem jQuery, ponieważ wykorzystuje go do pewnego projektu.
Po woli odkrywam potencjał tego skryptu, jednak nadal mam z nim problemy.

Zatrzymałem się na prostej sprawie, mianowicie.
Zależy mi, aby móc przekazac dane do sesji.
Mam taki skrypt w js:
  1. <?php
  2. $('#pan_2').click(function () {
  3. if ($(".pan_2:first").is(":hidden")) {
  4. $(".pan_2").slideDown();
  5.  $("#cover_2").replaceWith('<img id="cover_2" src="images/cover_1.png" />');
  6.  // tu ma nastąpic przesłanie do sesji jakiegoś stringa
  7. } else {
  8. $(".pan_2").slideUp();
  9.  $("#cover_2").replaceWith('<img id="cover_2" src="images/cover_0.png" />');
  10.  // tu ma nastąpic przesłanie do sesji jakiegoś stringa
  11. }
  12. });
  13. ?>


w phpie prosto bym to zrobił:

$_SESSION['xxx'] = 'asd';
w js nie mam pojecia! tongue.gif

Jeśli się nie da, to jak za pomocą jQuery przesłac zmieną do phpa? Wypełnienie sesji zrobie sobie w php

Czekam na odp, pozdr
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




W javascript sie nie da.
A do phpa masz setki sposobów
Ajaxem, w ciasteczkach. Jednakże bedziesz musial ostro zadbac o filtrowanie tych danych.


--------------------
Go to the top of the page
+Quote Post
k0b3
post
Post #3





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Tak sobie myśle, a gdyby Ajaxem przez POST?

Za bardzo nie znam sie na js. Jak to można wykonac?
Go to the top of the page
+Quote Post
wookieb
post
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Mozesz ajaxem przez posta. W jquery masz ajaxa. Poczytaj sobie jego dokumentacje. Tam wszystko pisze.


--------------------
Go to the top of the page
+Quote Post
k0b3
post
Post #5





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


http://docs.jquery.com/Ajax/jQuery.post

Nic a nic mi to nie mówi sad.gif Jeśli się znasz na ajaxie, js, skrobnij troche kodu.

Kod
$.post("index.php", { 'name': "John"} );

tak się definiuje zmieną POSt?
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Kod
$.post("index.php", { 'name': "John"} ,
function(data){
// tutaj piszesz swoj kod dalszej obslugi
});


no i teraz w php zmienna
Kod
$_POST['name']


bedzie miala wartosc john


--------------------
Go to the top of the page
+Quote Post
k0b3
post
Post #7





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Nie działa, zrobiłęm to samo co Ty...

sad.gif

dzięki za cierpliwośc tongue.gifP
Go to the top of the page
+Quote Post
wookieb
post
Post #8





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Co masz w konsoli błędow javascript?
(najlepiej pokazuje to dodatek firebug w firefoxie).
I jak ty to uruchamiasz?
daj lepiej link do strny.


--------------------
Go to the top of the page
+Quote Post
k0b3
post
Post #9





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Tak... ;-)


test.php
Kod
<script type="text/javascript" src="jquery-1.2.6.js"></script>

<script>
  $(document).ready(function(){
$.post("test.php", { name: "John"} );

});
</script>
<?

echo $_POST['name'];

?>
Go to the top of the page
+Quote Post
wookieb
post
Post #10





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




strona.php
Kod
<script type="text/javascript" src="jquery-1.2.6.js"></script>

<script>
  $(document).ready(function(){
$.post("test.php", { name: "John"} );

});
</script>


test.php
Kod
print_r($_POST);


Plik test.php jest wywoływany przez ajaxa i ty tego nie widzisz bezposrednio na stronie. W pliku test.php umieszczasz sobie obsluge dodawania czego tam chcesz.


--------------------
Go to the top of the page
+Quote Post
k0b3
post
Post #11





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Nadal mam z tym problem sad.gif

Usilnie próbuje przekazac tą zmienną do tego test.php, a później zapisac do sessji $_SESSION['panel']; i nic
Gdy się nie da rozwiązac problemu po prostu musze zwykle wyjaśnic do czego jest mi ten skrypt i zwykle problem rozwiązuje sie sam, a więc:

Robie CMSa i usiłuje zrobic, aby panele Reklam, Linków, Ulubionych, Ostatnio dodanych mogły się schowac gdy uzytkownik tego chce. Chce aby każdy ruch panem, czy to schowanie go czy to otworzenie zostal dopisany do sessji w taki sposób: $_SESSION['panel_1']=1 or $_SESSION['panel_1']=0. Przy otwieraniu strony panele są sprawdzane pod względem zawartości $_SESSION['panel_1,2,3,4'] i albo otwarte albo zamknięte w zależności od 0,1.
Gdy tworzy się nowa sesja (Anonymous) automatycznie dodaje wszystkie te panele jako otwarte. Teraz należałoby gdy użytkownik zmieni z otwartego na zamknięty dopisac to do sesji i tu wlasnie jest ten moj problem. NIe moge wyslac tej GLUPIEJ zmiennej do php sad.gif

W java script:
nie da się wysyłac do php zmiennej;
nie da sie zarzadzac sesjami
czego wiecej sie nie da? tongue.gif

Napisalem caly problem (moze powinienem zrobic to na samym początku) i czekam na jakieś propozycje. Jeśli macie inne pomysly chetnie wyslucham. NIe wiem jakby było to z ciasteczkami. Troche sie ich obawiam, sa nieco ryzykowne.
Go to the top of the page
+Quote Post
paziek
post
Post #12





Grupa: Zarejestrowani
Postów: 207
Pomógł: 25
Dołączył: 16.11.2006

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


Nie znam się na jQuery, więc napiszę jak potrafię

JavaScript
  1. <?php
  2. //przykładowe użycie
  3. send('&co=panel_1&wartosc=1'); //wyśle do test.php wartości: $_POST['co']==='panel_1' oraz $_POST['wartosc']==='1'
  4.  
  5. function send(p) {
  6. try {var http = new XMLHttpRequest();}
  7. catch(e) {http = new ActiveXObject('Microsoft.XMLHttp');}
  8. http.open('post','test.php',true);
  9. http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  10. http.setRequestHeader("Content-length", p.length);
  11. http.setRequestHeader("Connection", "close");
  12. http.send(p);
  13. }
  14. ?>

Przypisać te dwie zmienne do sesji po stronie PHP już chyba dasz radę?
Gdybyś miał problem z przypisaniem ich po stronie JS to pisz.

Co do ich pobierania i użycia przy wejściu jakiejś osoby, to już najlepiej zrobić getem pewnie:
JavaScript
  1. <?php
  2. function getSession() {
  3. try {var http = new XMLHttpRequest();}
  4. catch(e) {http = new ActiveXObject('Microsoft.XMLHttp');}
  5. http.open('get','test.php',true);
  6. http.onreadystatechange=function() {
  7. if(this.readyState===&& this.status===200) {
  8. if(!http.responseXML) {
  9. //koleś nie ma żadnych informacji w sesji na temat ustawień interfejsu
  10. } else {
  11. var d=http.responseXML.documentElement;
  12. var panel_1 = d.childNodes[0].firstChild.nodeValue;//0 lub 1 (string, nie liczba!)
  13. var panel_2 = d.childNodes[1].firstChild.nodeValue;// 0 lub 1 (string, nie liczba!)
  14. //itd.
  15. }
  16. }
  17. }
  18. http.send(null);
  19. }
  20. ?>

test.php
  1. <?php
  2. if($_SERVER['REQUEST_METHOD']==='GET') {
  3.  if($zalogowany) {
  4.  header('Content-type: text/xml; charset=utf-8');
  5.  echo '<?xml version="1.0" encoding="utf-8"?><daneSesji><panel_1>'.$_SESSION['panel_1'].'</panel_1><panel_2>'.$_SESSION['panel_2'].'</panel_2></daneSesji>';
  6.  } else {
  7.  //nie ma sensu nic wysyłać
  8.  }
  9. }
  10. ?>

Ważne aby nie było żadnych spacji między tagami XML, bo Firefox uzna je za (słusznie) jedno z childNodes i klapa.
Można to oczywiście zrobić na różne sposoby w pętlach itp. ale to już sam kombinuj ;-)



ps. ZNACZNIE łatwiej i wydajniej będzie to zrobić w ciasteczkach, do których JavaScript ma bezpośredni dostęp.
Wiążą się z tym jednak dwa problemy:
1. Jeśli koleś jakoś zgubi ciastko, to zgubi też ustawienia. Można więc zapisywać je również do sesji i próbować odtworzyc gdyby je zgubił.
2. Ktoś może ukraść te tajne/poufne informacje o tych skrycie ukrywanych ustawieniach interfejsu biggrin.gif

Ten post edytował paziek 16.08.2008, 12:36:24
Go to the top of the page
+Quote Post
lord_t
post
Post #13





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


@kobemat:

Zapodaj oba pliki na których testujesz (całe lub ewentualnie jesli sa długie to mądrze przycięte)

@paziek: Po co się tak zagłębiać? Jak chcesz dodac 2 liczby to nie trzeba pisać w asemblerze. jQuery działa, błąd musi więc być gdzieś indziej.


--------------------
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 Aktualny czas: 20.08.2025 - 23:50