Session wijzigen d.m.v. Javascript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- SanThe -

- SanThe -

14/12/2011 14:02:14
Quote Anchor link
Hallo PhpHulpers,

Ik werk eigenlijk nooit met Javascript. Als ik het al nodig heb dan vind ik meestal wel ergens een werkend stukje script. Maar nu heb ik daar toch een vraagje over:

Is het mogelijk om met Javascript de $_SESSION-waarde te wijzigen en/of uit te lezen? De session staat uiteraard op de server.

SanThe.
Gewijzigd op 14/12/2011 14:03:42 door - SanThe -
 
PHP hulp

PHP hulp

24/11/2024 17:58:23
 
Erwin H

Erwin H

14/12/2011 14:04:21
Quote Anchor link
Niet direct volgens mij, wel via AJAX calls (waardoor je het feitelijk gewoon via php doet)
 
- SanThe -

- SanThe -

14/12/2011 14:08:17
Quote Anchor link
Is dat zo even uit te leggen of kan ik beter een complete AJAX-tutorial gaan doornemen.
 
Ozzie PHP

Ozzie PHP

14/12/2011 14:21:55
Quote Anchor link
Uitlezen kan toch gewoon via php?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<script>
var sessie_variabele = <?php echo $_SESSION['session_variabele']; ?>
</script>
 
Erwin H

Erwin H

14/12/2011 14:23:03
Quote Anchor link
Als je met JQuery werkt is het in een paar zinnen uit legen, met puur Javascript is het iets langer (en heb ik er verder weinig ervaring mee). Een tutorial is dus altijd handig....

Maar met JQuery wat je doet is eigenlijk een call maken naar een normale php pagina.
Dit kan je doen met de functie $.getJSON() of $.post(). Stel je hebt bijvoorbeeld een pagina "test.php" en je wilt die aanroepen met de parameter action=get_id en username=test dan word je call in javascript:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$.getJSON("http://www.test.nl/test.php", {action: get_id, username: test}, function(res){});


De output van je php script wordt teruggegeven in de res variabele (kan je zo noemen als je wilt) van de callback functie.

Aan de server kant heb je dus gewoon een php script waarin je alles kunt doen wat je anders ook doet (dus ook met je Session data werken). Het enige wat je moet bedenken is dat je output in JSON formaat is of in XML formaat. Ik werk altijd met JSON, maar beide kan net zo eenvoudig. Als je bijvoorbeeld een array hebt met je output data, hoef je alleen dit te doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo json_encode( $result );
?>


Aan de client kant komt het terug als een javascript object. stel je array aan de server kant zag er zo uit: result = array('id' => 1) dan kan je aan je in javascript dus de waarde uitlezen met res.id. De functie als eerder genoemd wordt dus bijvoorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$.getJSON("http://www.test.nl/test.php", {action: get_id, username: test}, function(res){
  alert(res.id)
});


Bedenk alleen dat $.getJSON direct een JSON object vertaalt naar een Javascript object en dat teruggeeft. $.post doet dat niet en moet je dus zelf eerst nog de output omzetten naar een javascript object (met $.parseJSON(res)).
Gewijzigd op 14/12/2011 14:25:32 door Erwin H
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/12/2011 15:50:22
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$.post("test.php", {
    "action" : "get";
    },
    function(r) {
        //
    },
    "json");

Zo doe ik het met $.post() en r is dan een json object.
Gewijzigd op 14/12/2011 15:51:13 door Ger van Steenderen
 
Erwin H

Erwin H

14/12/2011 15:52:20
Quote Anchor link
Die toevoeging "json" zou moeten werken, maar die werkt bij mij nooit. Waarom, geen idee, maar vandaar de $.parseJSON() call. Die werkt wel...
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/12/2011 15:58:15
Quote Anchor link
Vreemd, welke versie jquery gebruik je? Werkt bij nl perfect op 1.7

Toevoeging op 14/12/2011 15:59:16:

@SanThe, mocht je een puur JS voorbeeld willen laat het dan even weten.
 
Erwin H

Erwin H

14/12/2011 16:00:45
Quote Anchor link
Op het moment 1.5.1, misschien eens upgraden dan...
 
Niels K

Niels K

14/12/2011 19:09:23
Quote Anchor link
@Erwin,

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$.ajax({
    url: 'url/',        
    data: {data},                                                
    dataType: 'JSON',
    type: 'POST',
    success: function() {}                                                
});


Je kan als dataType ook 'HTML' gebruiken.
 
- SanThe -

- SanThe -

14/12/2011 19:20:01
Quote Anchor link
Bedankt voor alle reacties. Vooral Erwin voor de uitgebreide uitleg. Het gaat nu nog behoorlijk boven mijn pet. ;-) Maar ik ga mij er in verdiepen. Ik kan voorlopig weer aardig vooruit.

SanThe.
 
Niels K

Niels K

14/12/2011 19:22:16
Quote Anchor link
Santhe,

Hier leggen ze alles uit: http://api.jquery.com/jQuery.ajax/ Zitten ook wat voorbeelden tussen.

Niels
 
- SanThe -

- SanThe -

14/12/2011 19:32:54
Quote Anchor link
Niels bedankt. Daar kan ik mezelf voorlopig wel zoet mee houden.
 
Erwin H

Erwin H

14/12/2011 19:54:03
Quote Anchor link
Niels Kieviet op 14/12/2011 19:09:23:
Je kan als dataType ook 'HTML' gebruiken.

Verrek, moet ik toch eens wat vaker net een pagina verder kijken.... nu doe ik het altijd met JSON omdat ik javascript de HTML laat opmaken, maar het is wel erg handig om te weten. THANKS!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/12/2011 20:20:43
Quote Anchor link
Nu ben ik even in de war, je kan met JSON toch ook HTML doorgeven?
 
Erwin H

Erwin H

14/12/2011 20:26:18
Quote Anchor link
Even uit de JQuery handleiding dan maar, omdat ik er nu zelf ook wel benieuwd naar werd:

Quote:
"xml": Returns a XML document that can be processed via jQuery.
"html": Returns HTML as plain text; included script tags are evaluated when inserted in the DOM.
"script": Evaluates the response as JavaScript and returns it as plain text. Disables caching by appending a query string parameter, "_=[TIMESTAMP]", to the URL unless the cache option is set to true. Note: This will turn POSTs into GETs for remote-domain requests.
"json": Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.)
"jsonp": Loads in a JSON block using JSONP. Adds an extra "?callback=?" to the end of your URL to specify the callback. Disables caching by appending a query string parameter, "_=[TIMESTAMP]", to the URL unless the cache option is set to true.
"text": A plain text string.


Je kan dus een JSON encoded return geven (waarin je uiteraard ook HTML kan hebben staan), of je kan gewoon een complete HTML pagina terugsturen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.