2010-12-02 12 views
0

Je travaille avec le code suivant:jquery .post ne fonctionne pas

action.php

<?php 
$_SESSION['passtext'] = $_POST['passtext']; 
?> 

index.php

<script type="text/javascript"> 
$(function(){ 
    $("#clickable").click(function() { 
     $.post("action.php", { passtext: "Hello" }); 
     alert('refresh the page to see the session text'); 
    }); 
}); 
</script> 

<a href="javascript:void(0);" id="clickable">click me to set session text</a> 

<?php if(isset($_SESSION['passtext'])) echo $_SESSION['passtext']; ?> 

Lorsque je clique sur le lien, je reçois l'alerte , mais il semble que action.php ne fonctionne pas du tout - parce que je vais rafraîchir la page et je ne vois pas l'écho de $ _SESSION ['passtext'] (il n'est pas en cours de définition)

Il n'y a pas d'erreur dans la console d'erreur.

Qu'est-ce qui me manque?

Répondre

2

Vous devez ajouter cette ligne au début de vos fichiers avant de traiter avec des sessions:

session_start(); 

De la documentation PHP:

session_start() crée une session ou reprend le celui en cours basé sur un identifiant de session transmis via une requête POST GET ou , ou transmis via un cookie.

+0

oh homme que je ne peux pas croire que j'ai oublié que cela était en fait une énorme séquence post i appareillé vers le bas pour poser cette question simple - s'avère que je manquais le session_start , maintenant je me sens comme un mannequin – samJL

1

Essayez d'utiliser JQuery AJAX Au lieu de cela:

$.ajax({ 
    type: "POST", 
    url: "action.php", 
    data: "passtext=Hello" 
}); 
+0

Vous "déclaré l'évidence" et résolu un problème pour moi! Je passais des données non-assoc (par exemple des données: "Bonjour Bob") et rien ne se passait. En notant votre suggestion, je l'ai changé pour "données:" Bonjour = Bob "et tout a fonctionné! Donc, il se trouve que seules les valeurs associatives peuvent être transmises Go Goger (Oui, je sais que j'aurais dû le savoir déjà ... grrr). – gibberish