如何通过Javascript将php会话从一个页面转移到另一个页面?

时间:2011-10-23 16:39:03

标签: php javascript session

我有一个表单(form.php),它在标题中使用以下JS代码:

<script type="text/javascript">
$(document).ready(function(){
$("a").click(function(){

$.post('test.php', function(data) {
        $('#test').html(data);
    });
    });
});
</script>

A在form.php中有一个链接,一旦点击我想要一个下拉列表出现(没有刷新页面),例如“显示下拉”。下拉列表中的代码在test.php中进行管理。

Test.php从另一个服务中提取数据。为了获得这些数据,我使用会话中保存的数据,例如$ _SESSION [ 'data_that_is_sent_to_another_service']。

我在form.php中启动会话,但是为了让test.php从test.php开始时需要启动会话的其他服务获取信息。

代码有效,但我接到警告说:

Warning: session_start() [function.session-start]:
Cannot send session cache limiter - headers already sent
(output started at /..my directory.../test.php:1) in /...my directory.../hrdeals.php on line 4

如何才能显示此警告(不关闭PHP中的警告)?

任何帮助都非常感激。

格里

PS - JS可能不正确,但它更多是我能解决的SESSION问题

2 个答案:

答案 0 :(得分:3)

在向浏览器输出任何内容之前,必须先调用<session_start()。检查test.php并确保没有输出。

答案 1 :(得分:0)

  1. Javascript和PHP会话彼此无关。 Javascript存在于它的小泡泡中(客户端渲染/处理)。 PHP存在于它的泡沫中(服务器端处理/输出)。

  2. 您得到的错误是(简要地) - 已发送的标头。

  3. 这是指http标头(不是你可能有一些javascript的head标签)。您可以在此处查看整个列表:http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

    在输出标题之前开始渲染网页内容时会发生此错误。必须先完成所有标题。

    检查发生session_start()后是否发生了来自php的所有回声和打印。打印进入的一个棘手的地方是当你结束php标签并在那里有任何东西 - 即使它在页面的末尾。您不需要在页面末尾结束php标记,即使后面的空格也会导致此类问题。最安全的方法是删除php文件底部的所有结束的php标签。

    另一个棘手的问题是,这种错误也是由代码编辑器输出的“字节顺序标记”引起的。您可以尝试在简单的纯文本编辑器中打开,修复和保存页面,看看是否能解决问题。