我一直坐在这里坚持两个小时试图弄清楚为什么这不起作用,所以我向大家求助于一些指导。
我有以下脚本,它会拉出当前在页面上检查的所有复选框,并将其title属性设置为names数组。每个标题都是一个字母a-e,具体取决于它们在特定部分的位置。这可能不是最好的方法,但由于以前的编码限制,这是最简单的解决方案。
names = [];
$('input:checked').each(function()
{
names.push($(this).attr("title"));
});
question_one_val = names[0].toString();
$.post("ajax_request.php",
{first_question: question_one_val
});
然后将其发送到我的下面的ajax页面:
session_start();
require_once 'question_responses.php';
require_once 'questions.php';
$test = $_POST['first_question'];
$test = question_one($test);
$_SESSION['views']=$test;
我还会在两个需求页面中添加一个小片段。
question.php
function question_one($answer)
{
$question_one_response="";
if($answer == "a")
{
$question_one_response = $question_one_response_a;
}
if($answer == "b")
{
$question_one_response = $question_one_response_b;
}
if($answer == "c")
{
$question_one_response = $question_one_response_c;
}
if($answer == "d")
{
$question_one_response = $question_one_response_d;
}
if($answer == "e")
{
$question_one_response = $question_one_response_e;
}
return $question_one_response;
}
和question_responses.php
$question_one_response_a = "Response a";
$question_one_response_a = "Response b";
$question_one_response_a = "Response c";
$question_one_response_a = "Response d";
现在截至目前,当我尝试访问会话变量时,我得到一个空字符串,或者没有设置变量。
真正让我感到困惑的是,我已经做了一些测试而没有尝试将其设置为响应。 所以:
$test = $_POST['first_question'];
$_SESSION['views']=$test;
将在我正在显示的页面上返回正确的a-e值。因此,我的ajax请求以及获取值的javascript似乎正在工作,我认为它必须是其他页面的问题,但我无法弄清楚究竟是什么原因。
答案 0 :(得分:0)
所以,如果我没错,你已经检查了所有这些要点吗?
session_start();
始终设置在页面顶部,在任何输出之前(即使是空白字符)。
question_one_val
包含预期值(使用console.log())
$test
包含预期值(使用var_dump)
question_one
会返回预期值< =您的问题可能存在,您确定$answer
是否符合至少一个条件?
您应该尝试按$question_one_response="";
修改$question_one_response="test";
,看看您的会话是否包含test
字符串!