javascript - 当我使用 jQuery ajax 时,php 不记得变量

标签 javascript php jquery ajax variables

当我使用 jQuery ajax 时,我遇到了 php 不记住变量的问题。 你能帮我如何让它记住它的变量吗?

我有此消息底部所附的代码文件。 首先,question.php 向 javascript 发送一个问题(通过 jQuery ajax)并以 html 形式显示。 Question.php 文件也会进行求和并将其放入变量 $ CorrectAnswer$_SESSION[ Correct_answer] 中。 然后,用户在 html 中输入答案,然后 javascript 将答案发送到 .check_answer.php(通过 jQuery ajax)。 之后,check_answer.php 文件中的 php 代码会将用户答案与变量 $ Correct_answer$_SESSION[ Correct_answer] 进行比较,以查看答案是否正确。

问题是check_answer.php似乎不记得question.php中设置的变量$ Correct_answer,因此它无法正确检查答案。 我尝试使用 $_SESSION[ Correct-answer] 代替,但服务器端(php)仍然不记得 $ Correct_answer 或 &SESSION[ 中的值正确答案]。

你能告诉我我在这里做错了什么以及如何让 php 记住正确答案的变量吗?

谢谢你, 诺比

index.php

<html>
    <head>
        <meta charset="UTF-8">
        <title>Ajax-powered Quiz</title>


    </head>
    <body>
        <p> Answer the following question. </p>
        <p id="question_text">Question</p>
        <p id="response_text">Response</p>

        <input id="your_answer" type="textbox">    
        <input id="submit_button" type="button" value="submit">

    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/main.js"></script> 
    </body>
</html>

ma​​in.js

$.ajax({
        url:"php/question.php"
}).done(function(data){
    $("#question_text").html(data);
});


function server_response(data) {
    $("#response_text").html(data);
}

function submit_answer() {
    alert("answer submitted!");
    var your_answer;
    your_answer = parseInt( $("#your_answer").val() );

    var send_object = {
        yourAns: your_answer
    };

    //$.get("php/check_answer.php", send_object, server_response);

  $.ajax ({
    url: 'php/check_answer.php',
    type: 'post',
    data: send_object,
    success: server_response
  });
}



$("#submit_button").click(submit_answer);

问题.php

<?php
session_start();

$numb1 = 2;
$numb2 = 3;
$_SESSION['correct_answer'] = $numb1 + $numb2;

echo "$numb1 + $numb2 = ?";

?>

check_answer.php

<?php

$your_answer = filter_input(INPUT_POST, "yourAns");
echo "your answer is $your_answer!";

$correct_answer = $_SESSION['correct_answer'];
if ($your_answer == $correct_answer) {
    echo "You are correct!";
} else {
    echo "You are wrong!";
    echo "Correct answer is $correct_answer!";
}



?>

最佳答案

您没有在 check_answer.php 中启动 session 。

因此,请在 check_answer.php 中添加 session_start()。它会起作用的:)

关于javascript - 当我使用 jQuery ajax 时,php 不记得变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33169978/

相关文章:

javascript - 即时调整形状大小

php - Mysql 向此查询添加 AND 子句

javascript - 如何在不提交表单的情况下触发标准的 HTML5 表单验证?

javascript - 外部弹出窗口 onclick 每个 session 仅打开一次

jquery - Wordpress ...强制第 3 方插件使用主题字体样式 css?

javascript - 无法读取未定义的属性 'oScroll' - jQuery DataTables

javascript - 上传文件 - Protractor

javascript - Eloquent JavaScript 递归示例如何以返回 1 终止但仍输出指数值

javascript - 2 个 div,1 个隐藏,悬停时触发另一个

php - 无限滚动启用(wordpress)