Hallo,

Ten eerste zal ik mijn situatie even uitleggen:

Ik gebruik facebook's single sign-on plugin om mensen te laten inloggen op mijn site. Dit gaat met javascript.

Uiteindelijk krijg ik na het inloggen voor iedere user een uniek id van de ingelogde user. Die noem ik dan "var userid".

Met dat userid wil ik in een php pagina een database doorzoeken om alle bestellingen van de ingelogde user op te vragen. Iedere bestelling heeft een column "userid". Ik weet dus niet hoe ik mijn javascript variabele in mijn php script krijg.

Mijn facebook inlog script (en dus ook de variabele) staat in een geïnclude menu.php en ik heb die variabele nodig in mijn pagina.php.

Hopelijk kan iemand mij hiermee helpen.
Als je een JS waarde over wilt brengen naar PHP, dan zou je een AJAX-request moeten gebruiken.
Ik heb hier al eens naar gekeken maar het werkte niet.

Toen had ik dit:

javascript in menu.php:

$.ajax({
type: "POST",
url: 'pagina.php',
data: {userID: userid}
});

en dan in mijn pagina.php
$id = $_POST['userID'];
(menu.php staat included in pagina.php)
Misschien doe ik hier iets fout?
Heb je ook de jQuery zelf ingevoegd?
Ik heb wel jquery zelf wel included als je dat bedoeld?
Aar bedoeld denk ik of je <script src="jQuery URL hier"></script> ingevoegd hebt.
Jep, zo dus
[code]
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function(){
$.ajax({
type: "POST",
url: "pagina.php",
data: {userID: userid}
}).done(function() {
alert('Done');
}).fail(function() {
alert('Fail');
});
});
</script>
Bedankt voor de reacties! Ik ga het zo meteen proberen. Ik neem aan dat ik de functie zelf niet aan hoef te roepen? Of gewoon bij document load?
met functie bedoel je $(function(){ ?
Dit is een beetje verwarrend, maar het is niet een function zoals je gewend bent.
$(function(){ is een afkorting van $( document ).ready(function() {
En alles wat daar binnen staat wordt pas uitgevoerd zodra alles geladen is.
edit: Je hoeft deze dus niet zelf aan te roepen.
Ik heb nu de functie in mijn menu.php gezet.
Als ik naar pagina.php ga dan krijg ik de alert "Done" na enkele seconde wel in beeld.

Vervolgens blijkt hij gewoon leeg te zijn als ik hem print.
$userid = $_POST['userId'];

Dit is mijn volledige ajax code:

$(function(){
$.ajax({
type: "POST",
url: "mijn-opstellingen.php",
data: {userId: userid}
}).done(function() {
alert('Done');
}).fail(function() {
alert('Fail');
});
});

Misschien zie ik toch iets over het hoofd?

Edit: het ligt in ieder geval niet aan de javascript var userid, die heb ik al gecontroleerd door hem bijvoorbeeld achter de "Done" alert te printen.
Ik ben benieuwd wat je precies probeert. POST is niet een variabele die onthouden blijft, dus zodra ik jouw script uitvoer en ik open daarna de PHP pagina, is er natuurlijk geen POST.
Wanneer je de POST in een SESSION of database gaat opslaan zal het waarschijnlijk wel werken.

Zet deze code eens in 'mijn-opstellingen.php'
<?php
session_start();

$_SESSION['POST'] = $_POST;

var_dump($_SESSION['POST']);
?>
Voor de javascript nog eens uit, en open dan die pagina.

[size=xsmall]Toevoeging op 24/04/2014 16:11:48:[/size]

Je zou je script nog even kunnen uitbreiden met je geposte data, maar ik denk ook niet dat het daaraan ligt.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function(){
    $.ajax({
        type: "POST",
        url: "pagina.php",
        data: {userID: userid}
    }).done(function(data) {
       alert('Done : ' + data);
    }).fail(function(data) {
    alert('Fail : ' + data);
    });
});
</script>

Reageren