2009-10-15 16 views
8

¡Ayuda!

Estoy teniendo problemas para luchar AJAX para que trabaje para mí. Tengo una galería paginada con casillas de verificación debajo de cada imagen y necesito almacenar los valores de la casilla de verificación en las variables de sesión si un usuario se mueve entre las páginas, de modo que cuando envíen el formulario en cualquier momento incluirá todos los valores marcados en todas las páginas.

estoy usando el código jQuery:

$(document).ready(function() { 
    $(".gal-nav").click(function() { 
     $.post("form-data-holder.php", $("#gallery-form").serialize()); 
    }); 
}); 

y el archivo form-data-holder.php dice esto:

<?php 

    $_SESSION['saved'] = "true"; 

    foreach ($_POST as $key=>$value) { 
     if ($key !== "submit") { 
      $value = htmlentities(stripslashes(strip_tags($value))); 
      $_SESSION[$key] = $value; 
     } 
    } 

?> 

que tienen dos cuestiones -

1) ¿Cómo obtengo los valores de casilla de verificación de la función serialize()? Creo que hay más que hacer con algo como value [] para sacar esa matriz, y luego supongo que almacenar cada una como una variable de sesión separada, a menos que pueda almacenar una matriz como una variable $ _SESSION.

2) Antes de siquiera meterme con algo de eso, agregué esa línea $ _SESSION ['saved'] = "true"; a la secuencia de comandos php y luego hago eco de las claves $ _SESSION y los valores en la página de mi galería para ver si la solicitud de AJAX está funcionando. No es. Esa $ _SESSION ['saved'] no se agrega a la lista de variables $ _SESSION repetidas cuando regreso a la página.

¡Cualquier ayuda sería muy apreciada!

Respuesta

6

Necesita llamar a session_start() en su archivo form-data-holder.php.

Cada vez que realiza una llamada ajax, está solicitando una página nueva/nueva del servidor que no tiene conocimiento de ninguna de las variables establecidas en la página original.

+0

Disculpe, la sesión ya ha comenzado porque el usuario debe haber iniciado sesión para ver la galería. – rhodesjason

+0

Sí, pero cuando haces una llamada ajax, está cargando una nueva página php, comenzando de nuevo, por lo que necesitarás llamar allí también. – jeroen

+0

Hmm ok, agregué al principio del archivo form-data-holder.php - sin cambios. ¿Debo asociar esa sesión con la otra sesión de alguna manera? – rhodesjason