Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在第二次刷新之前未设置Cookie_Javascript_Php_Cookies - Fatal编程技术网

Javascript 在第二次刷新之前未设置Cookie

Javascript 在第二次刷新之前未设置Cookie,javascript,php,cookies,Javascript,Php,Cookies,我在第一页有一张表格: <form method="post" action="request-form"> <input type="text" id="amzQry" name="item" placeholder="What do you need?" autocomplete="on"> <input id="autocomplete" name="destination" placeholder="where? (e.g. Buenos Aires)" o

我在第一页有一张表格:

<form method="post" action="request-form">
<input type="text" id="amzQry" name="item" placeholder="What do you need?" autocomplete="on">
<input id="autocomplete" name="destination" placeholder="where? (e.g. Buenos Aires)" onfocus="geolocate()" type="text" required="" aria-required="true" autocomplete="off">
<button type="submit" value="" >submit</button>
 </form>

提交
我希望以持久的方式保存此信息,以便即使用户随后登录(在本例中登录到joomla),cookie数据也是持久的,并且可以被调用。这就是为什么我在本例中使用cookies而不是会话。如果这不是正确的方法,请纠正我

我有一些代码来设置和检索第2页上的cookie:

<?php
$itemcookie = $_POST['item'];
$detsinationcookie = $_POST['destination'];
setcookie( "itemcookie", $itemcookie, strtotime( '+30 days' ) );
setcookie( "destinationcookie", $detsinationcookie, strtotime( '+30 days' ) );
?>

但在表单提交后加载cookie数据时,cookie数据不会出现在第二页上。如果我刷新第二页,数据将显示在正确的位置,即我调用它的位置,例如

<?php echo $_COOKIE["itemcookie"]; ?>


如何在第2页上立即获得cookie数据?

显然,在调用setcookie()之前,您有一些输出 如果在session_start()、setcookie()或header()之前有一些输出(甚至只有一个空格字符),浏览器将无法识别cookie,并且在脚本启动后它们将不可用。

您无法识别

如果您选中以下选项:

这意味着您的cookie在设置它们的页面/脚本上不可用

您可以使用另一个变量来显示值,例如:

$itemcookie_value = isset($_POST['item']) ? $_POST['item'] : $_COOKIE["itemcookie"];
你可以


您所要做的就是使用AJAX请求设置cookie,这样当您仍在页面上时,cookie就会被设置,然后当您刷新页面时,cookie就会对您可用。

这是Joomla中的一个组件文件。我猜在组件文件之前有相当多的输出。那么,在提交javascript之前,如何将数据放入cookie呢?
$itemcookie_value = isset($_POST['item']) ? $_POST['item'] : $_COOKIE["itemcookie"];