【问题标题】:Setting a cookie in an ajax call's echo page在 ajax 调用的回显页面中设置 cookie
【发布时间】:2015-09-06 03:17:44
【问题描述】:

我尝试在 ajax 调用页面中设置 cookie,您在其中回显 ajax 调用接收到的数据并收到错误消息。我不确定它可能意味着什么或如何解决它。当它们没有在 ajax 调用页面中使用时,设置 cookie 可以正常工作,您可以在其中回显收到的信息。

setcookie("TestCookie", $value, 0, '/', ".websiteName.com");

收到以下错误消息。不知道这意味着什么。

Warning: Cannot modify header information - headers already sent by 

【问题讨论】:

  • 假设这发生在您的 PHP 代码中的服务器端,这听起来就像错误所表明的那样,您试图在此过程中设置一个 cookie(它修改响应中的标头)为时已晚在标头已经发送之后。如果您包含此调用所在的实际 PHP 代码,那么人们可能会更直接地帮助您。
  • 什么时候发送标头?
  • 如果您需要进一步的帮助,请显示您的 PHP 代码的相关部分,以便人们可以准确地看到您正在执行的事件序列。人们帮助您纠正您的特定问题比在没有任何上下文的情况下教授通用 PHP 响应处理要容易得多。
  • ajax调用echo的那部分代码?我在那个部分有 50 页代码。
  • Idk PHP,但可能标头可能设置在开头的某个位置...您使用的是 Web 框架吗?

标签: javascript php jquery ajax cookies


【解决方案1】:

未显示的完整错误意味着标头已设置。如果您想使用 setcookie(),则需要在任何 HTML 发送给用户之前进行调用。

头信息先发送出去,后期处理不能修改。

在大多数情况下,将 setcookie() 移到顶部之后

<?php

将解决错误,只要它放在任何输出(html)发送出去之前。

【讨论】:

  • test 像这样的?
  • 有什么 echo 语句呢? setcookie 必须放在任何 echo 语句之前吗?
  • 一般情况下,您会将 setcookie() 放在开始 标记之前。在大多数情况下,回显内容意味着标头已经发送。
猜你喜欢
  • 2017-10-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
相关资源
最近更新 更多