Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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 使用Ajax请求设置Cookie_Javascript_Php_Jquery_Ajax_Cookies - Fatal编程技术网

Javascript 使用Ajax请求设置Cookie

Javascript 使用Ajax请求设置Cookie,javascript,php,jquery,ajax,cookies,Javascript,Php,Jquery,Ajax,Cookies,我有一个带有表单的php页面,它有一个按钮。单击按钮时,将运行jquery函数,该函数执行一些验证测试,然后使用ajax提交表单。在ajax运行的php脚本中,设置了一个cookie。设置cookie之后,我立即尝试获取cookie值,我从脚本中回显该值,并在ajax请求的success函数中吐出该值。尚未设置cookie值 代码如下 mainpage.php $(文档).ready(函数() { $('#提交_比较_阶段1')。单击(函数() { //验证材料 如果(通过了_验证) { va

我有一个带有表单的php页面,它有一个按钮。单击按钮时,将运行jquery函数,该函数执行一些验证测试,然后使用ajax提交表单。在ajax运行的php脚本中,设置了一个cookie。设置cookie之后,我立即尝试获取cookie值,我从脚本中回显该值,并在ajax请求的success函数中吐出该值。尚未设置cookie值

代码如下

mainpage.php


$(文档).ready(函数()
{
$('#提交_比较_阶段1')。单击(函数()
{
//验证材料
如果(通过了_验证)
{
var form_data=$(“#compare_form”).serialize();//将查询详细信息收集到表单中
$.ajax({
类型:“POST”,
url:“scripts/process_compare.php”,
数据:表格数据,
成功:功能(数据)
{
警报(数据);
},
错误:函数(jqXHR、textStatus、errorshown)
{
//错误材料
}
});
}
返回false;
});
});
....
下一个
process_compare.php


ajax请求正在发布警告消息,说“hisuccess”,因此没有设置cookie

我不确定这是因为页面需要刷新还是其他原因,但我知道当我们定期使用action=“/process\u compare.php”和iframe提交表单时,使用的代码是什么


有人能帮忙吗

cookie作为响应的标头发送。在
data
参数中,您得到的是响应的主体,而不是标题

您从或获得的响应的标题似乎不包括
Set Cookie
标题

但是浏览器对cookie的处理是透明的。因此,为了访问cookies,您可以使用该属性

$.ajax({
...
成功:功能(数据、状态、jqxhr){
var=[];
if(document.cookie)
cookies=document.cookie.split(“;”);
//用饼干做点什么
},
});

或者使用位于的插件。

如果生成了cookie,您是否尝试过简单地运行脚本(服务器端)?对不起,我不明白。它肯定是在运行脚本,因为它正在打印echo'success'位。我的意思是,您的进程不使用ajax直接与\u compare.php进行比较,并尝试在有cookie的情况下进行echo。您已正确设置为/的路径,该路径应可跨域访问。您为什么仍在使用Cookie?好的,我想我理解。那么,我需要向ajax代码中添加什么才能使程序的其余部分在以后能够读取cookie呢?非常感谢Olaf:)抱歉,当我实际测试它时,变量cookie返回空值:(@PippaRoseSmith我自己测试过,可以确认缺少的cookie头。现在,我看到的唯一方法是使用
document.cookie
,查看更新的答案。谢谢,我不知道为什么这样做有效,但它确实有效:)
<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> 
<?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;
     }
?>