从jquery加载php文件时session_start()失败

时间:2013-08-12 15:56:56

标签: php jquery ajax

我将一个php文件包含在JQuery中,如下所示:

主要php文件:

<?php
session_start();
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<?php

$_SESSION['ID'] = "32";

?>

<div id="sesion"></div>

<script>

$("#sesion").load("fun.php");

</script>

将加载的php文件,fun.php:

<?php
session_start();
echo 'new php';
echo $_SESSION['ID'];
?>

当我添加session_start()时,fun.php显示空白如果我将其删除,它将显示:“new php”

我需要在“fun.php”文件中打开会话,但我似乎无法实现它。

6 个答案:

答案 0 :(得分:0)

session_start()放在页面顶部,其中包含chalk_element.php页面

答案 1 :(得分:0)

尝试简化您的环境。

在最顶层创建一个带有session_start()的新index.php,然后创建几个会话变量。

接下来,创建您的chalk_element.php文件并通过index.php中的jQuery加载它。

现在做一些非常简单的事情来访问会话变量,看看会发生什么。这将为您提供一个简化的测试环境,您可以在其中试验配置。

答案 2 :(得分:0)

这听起来像是在你调用session_start之前输出的内容(HTML)。您可以移动session_start(),使其位于页面顶部(位于顶部,没有空格)或首先调用ob_start()。然后,您可以输出数据并稍后调用session_start()

另外,请检查错误日志,以获取有关PHP文件刚停止工作的原因的任何有用错误信息。

答案 3 :(得分:0)

这两个文件在每个文件的顶部需要session_start();才能输出任何其他文件,因为此函数会发送多个HTTP标头。

这是一个简单的例子:

<强>的index.php

<?php 
//Start session
session_start(); 
//Set the value in your session
$_SESSION['key']='value';
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
</head>

<body>
<script>
$(function() {
   $("#Chalk").load('chalk_element.php');
});
</script>

<div id="Chalk">Loading...</div>

</body>
</html>

<强> chalk_element.php

<?php 
//Start session also to `resume` session
session_start(); 
//Check from ajax
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){
    //output session var if set
    echo isset($_SESSION['key']) ? $_SESSION['key'].' was set in session' : 'session value was not set';
}
?>

答案 4 :(得分:0)

保存文件时出现编码问题。我用ANSI代码保存了这两个文件并解决了问题。

答案 5 :(得分:-1)

试试这个..!

  

ob_start(); //页面顶部

     

ob_flush(); //页面末尾