【发布时间】:2014-02-08 06:23:04
【问题描述】:
我有一个带有一个按钮的 php 页面。单击该按钮时,将运行一个 jquery 函数,该函数执行一些验证测试,然后使用 ajax 提交表单。在ajax 运行的php 脚本中,设置了一个cookie。在设置 cookie 之后,我立即尝试获取 cookie 值,我从脚本中回显该值并在 ajax 请求的成功函数中吐出。 cookie 值尚未设置。
代码如下。
mainpage.php
<script type="text/javascript">
$( document ).ready(function()
{
$('#submit_compare_stage1').click(function()
{
//Validation stuff
if (passed_validation)
{
var form_data = $('#compare_form').serialize(); //Collect query details into a form
$.ajax({
type: "POST",
url: "scripts/process_compare.php",
data: form_data,
success: function(data)
{
alert(data);
},
error: function(jqXHR, textStatus, errorThrown)
{
//Error stuff
}
});
}
return false;
});
});
</script>
<form name="compare_form" id="compare_form" action="">
....
<button id='submit_compare_stage1' name='submit_compare_stage1'>Next</button>
</form>
process_compare.php
<?php
//MySQL Stuff
makeCookie('cs', '2');
echo 'hi' . getCookie('cs', false);
echo "success";
function makeCookie($name, $contents, $length = 3600)
{
// Create a new cookie
setcookie($name, $contents, time() + $length, '/');
}
function getCookie($name, $delete = true)
{
// Return the contents of a cookie and delete it if requested
$contents = $_COOKIE[$name];
if($delete) {
setcookie($name, '', time() - 3600, '/');
setcookie($name, '', time() - 3600);
}
return $contents;
}
?>
ajax 请求正在发布警报消息,提示“hisuccess”,因此未设置 cookie。
我不确定是不是因为页面需要刷新或其他原因,但我知道当我们使用 action="/process_compare.php" 和 iframe 定期提交表单时,代码可以正常工作结果成。
有人可以帮忙吗?
【问题讨论】:
-
如果生成了任何 cookie,您是否尝试过简单地运行脚本(服务器端)?
-
对不起,我不明白。它肯定在运行脚本,因为它正在打印 echo 'success' 位。
-
我的意思是你的 process_compare.php 直接没有 ajax 并尝试回显 cookie 如果它在那里。您正确设置为 / 的路径应该可以跨域访问。
-
你为什么还在使用cookies?
标签: javascript php jquery ajax cookies