2010-11-01 3 views
0

Je construis un système de commande et il y a 2 parties différentes pour ajouter des produits. Dans les deux parties, les produits sont insérés avec une requête ajax, ce qui renvoie le panier. Dans la première partie, les produits sont directement ajoutés (sans aucune option). Cette partie fonctionne bien. Dans la deuxième partie, les utilisateurs peuvent ajouter des préférences à l'article commandé. Lorsque l'utilisateur clique sur un lien, une fenêtre contextuelle est ouverte. Ici, l'utilisateur peut sélectionner les préférences. Lorsque l'utilisateur soumet le formulaire, un appel ajax est effectué sur le même script. Donc, je regarde la variable $ _SESSION, et il semble être vide ...Tableau de session vide dans une requête ajax

La session est démarrée, le nom de session et l'ID de session sont les mêmes que sur la page réelle, mais le tableau est vide. Lorsque j'actualise la page, les données que j'ai ajoutées sont également ajoutées à la variable $ _SESSION, mais pas quand je fais l'appel ajax ... J'ai ajouté le nom et l'identifiant de la session dans l'url, mais ça ne marche toujours pas .

Est-ce que quelqu'un a une idée de ce qui peut mal tourner? Le code fonctionne normalement très bien ...

La session est démarrée dans un fichier nommé connection.php. Dans le panier I a ajouté ce code:

if(!session_id()) { 
    $id = $_GET[session_name()]; 
    session_id($id); 
    session_start(); 
} 

Ceci est ajouté au javascript:

//config: 
$.sid = '<?php echo(session_name() . "=" . session_id()); ?>'; 

// in the request function ($(this) is the form): 
var qry = '?action=add&' + $(this).serialize() + '&' + $.sid; 

Gr

+0

Pouvez-vous montrer un code ? Surtout la partie où vous ajoutez l'ID de session à l'URL Ajax? Est-ce que vous faites un 'session_start()' dans le script Ajax? –

+0

Oui, j'ai commencé la session. Le code est ajouté. – VeeWee

+0

sont ces sessions du même client? – helle

Répondre

0

Si session_start présente avant

session_start(); 
.... 
$id = $_GET[session_name()]; 
if (session_id() != $id) { 
    session_write_close(); 
    session_id($id); 
    session_start(); 
}