Far interagire il javascript con il PHP

Ciao ragazzi, avevo intenzione di dare la possibilità di eliminare una classe e con cookie far sì che rimanga eliminata per il tempo che io ho stabilito. 

Allora, per la gestione dei cookie so già come si fa, per eliminare la classe in PHP non lo so, dunque ho deciso di usare l'API .fadeOut() di jQuery, così davo anche un effetto carino all'eliminazione (che poi più che eliminare è nascondere, ma lasciamo passare). Ho scritto il codice in questo modo, ma mi da problemi (dopo il codice scrivo che problemi mi da):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <style>
  p { font-size:150%; cursor:pointer; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>

<body>
<?php
$chiudi = "<script language=javascript>$(\"p\").click(function () {
  $(\"p\").fadeOut(\"slow\");
  });</script>";

setcookie("chiudi_avviso", $chiudi, time()+3600);

$cookie = $_COOKIE['nome_utente'];

if (!$cookie) {
           echo "<p>Clicca qui</p>";
}
?>
</body>
</html>

Dunque, non solo quando clicco la funzione javascript non appare (evidentemente il sistema che ho usato crea una incompatibilità) ma se aggiorno la scritta si vede lo stesso quindi i cookie non partono, quindi.. Cosa sbaglio?

inviato 4 anni fa
Clear
Clear
21
modificato 4 anni fa
Per quale ragione inserire codice javascript in un cookie?Mario Santagiuliana 4 anni fa
Potrebbe essere un errore?Andrea Turso 4 anni fa
X 0 X

Il problema del tuo codice è che utilizzi la funzione setcookie dopo aver stampato del testo, quando la documentazione (basta leggere la sezione Return Values) spiega che queste informazioni vanno inserite prima di qualsiasi altro output.

risposto 4 anni fa
zeropingas
modificato 4 anni fa
X 0 X

Prova a impostare i cookies direttamente con jQuery

$.setcookie("nome", "valore")

Per creare un cookie della durata di un'ora hai bisogno di usare un metodo molto simile a quello che hai già usato con PHP:

var date = new Date();

// 3600 secondi × 1000

date.setTime(date.getTime() + (3600 * 1000));
$.cookie("nome", "valore", {expires: date});
risposto 4 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda