大家好,提前感谢你们对我的关注。我在wordpress中有这个代码,但我无法正确理解。
我在下拉列表中列出了美国各州。当用户从选择表单中选择一个选项并按下“设置新位置”按钮时,我需要写入一个cookie,其中包含该位置的ID(或实际名称)。我正在使用(或至少尝试使用)jquery cookie插件(https://github.com/carhartl/jquery-cookie) - 但可能主要的问题是我几乎不知道jQuery,哈哈。
不起作用的想法是jQuery.cookie(\'my_cookie\', \'my_value\');
你能帮帮我吗?以下是我正在研究的代码:
<form id="categoriesform" action="<?php bloginfo(\'url\'); ?>" method="get">
<div>
<?php $cats = get_categories($args);
$termID = $_COOKIE[\'my_cookie\'];
$term = get_term( $termID, \'location\' );
$name = $term->name;
?>
<select id="categories">
<?php foreach ($cats as $cat) : ?>
<option value="<?php echo get_term_link($cat, $cat->taxonomy) ?>" ><?php echo $cat->name ?></option>
<?php endforeach; ?>
</select>
<input type="submit" name="submit" value="Set New Location" />
</div>
</form>
<script>
jQuery(document).ready(function()
{
jQuery(\'#categoriesform\').submit(function()
{
jQuery.cookie(\'my_cookie\', \'my_value\');
window.location = jQuery(\'#categories\').val();
return false;
});
});
</script>
最合适的回答,由SO网友:Chris_O 整理而成
如果不给cookie一个过期时间,它将仅在该会话期间可用。如果已经设置了现有cookie,则还需要销毁该cookie。
jQuery(function() {
jQuery(\'#categoriesform\').submit(function(e) {
if (jQuery.cookie(\'my_cookie\') ) { jQuery.cookie( \'my_cookie\', null) }
jQuery.cookie(\'my_cookie\', \'my_value\', { expires: 30 });
});
});
您是否测试过cookie是否正在设置?使用chrome developer tools中的网络选项卡并加载页面。单击左侧的第一个项目,即站点的url,然后单击cookie选项卡,查看cookie是否存在。
阅读cookie时,你还应该检查它是否在那里。
if (isset($_COOKIE[\'my_cookie\'])) {
$termID = $_COOKIE[\'my_cookie\'];