【问题标题】:assigning javascript variable to php session variable将javascript变量分配给php会话变量
【发布时间】:2012-02-24 14:03:09
【问题描述】:

我正在做一个在线考试工具。我想尽量减少数据库请求的数量。所以我要求一次性完成测试中的所有问题。在此之后,我必须记住用户尝试过的所有问题及其答案。我的计划是将答案保存在这样的 php 会话变量中

$('input[type=radio]').click(function()
{
    var id = ($(this).parent().attr('id'));
    id = id.slice(4);
    $('#nav'+id).css('color','red');
    <?php  $_SESSION['ques['id']']= ?> $(this).val() <?php ;?>
});

在上面的代码中,以下几行用于更改尝试问题的颜色。

    var id = ($(this).parent().attr('id'));
    id = id.slice(4);
    $('#nav'+id).css('color','red');

这里的 id 是问题的 id。问题是我收到以下错误

Parse error: syntax error, unexpected ';' in /var/www/sites/onlinetest/test.php on line #x

我也很确定以下是错误的

$_SESSION['ques['id']']

因为 id 是这里的 javascript 变量。请帮我。我也很感激是否发布了比“存储在会话变量中”更好的解决方案

【问题讨论】:

标签: php jquery session


【解决方案1】:

1) 你的问题出在click 块的最后一行。我不完全确定您要做什么,但是您有 &lt;?php ; ?&gt; 并且分号导致您的脚本无法解析。第一部分

&lt;?php $_SESSION['ques['id']']= ?&gt;

也不做任何事情。看起来您正在尝试将 Javascript 值 $(this).val() 分配给 PHP SESSION 全局,这是您无法做到的。您需要对服务器进行 AJAX 回调以更新会话变量。

2) 嵌套数组时使用双引号,如下所示: $_SESSION["$ques[id]"]

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    只需将答案存储在 JS 中,并在回答完最后一个问题后将其发送到服务器。

    这是一个非常基本的存储到数组的示例:

    var answers=[];
    
    $('input[type=radio]').click(function()
    {
        var id = ($(this).parent().attr('id'));
        id = id.slice(4);
        $('#nav'+id).css('color','red');
        answers.push($(this).val());
    });
    

    发送到服务器端:

    $.ajax({
       type: 'POST',
       data: {answers : answers},
       url: '/path/myfile.php',
       success: function(data) {},
       error: function() {}
    });
    

    在 PHP 中捕获它:

    if (isset($_POST['answers'])) { 
       $answers = $_POST['answers']; 
    }else{ 
       die('error'); 
    }
    

    这就是我要做的方式,只需使用 javascript 显示/隐藏问题。

    如果您为每个问题刷新页面,您可以在每次新页面加载时将答案存储在 PHP 中,只要您不尝试在 JS 文件中使用 PHP 代码,这应该非常简单。

    【讨论】:

    • 我的重点是在页面刷新时不要丢失数据,这可能发生在各种用户身上。
    【解决方案3】:

    我认为我们永远不会将任何客户端脚本变量转换为服务器端脚本语言

    解决方案存储在一些隐藏的表单变量中,然后在表单提交时您可以获取 GET 或 POST 变量

    谢谢

    【讨论】:

    • 我不能这样做,好像用户刷新页面所有数据都丢失了。
    • 我们可以进行一次 ajax 调用,将 javascript 值传递给某个 php 页面,然后您可以在会话中存储该数据
    【解决方案4】:

    即使你清除了错误,代码似乎也不会像你预期的那样工作。所以在 jquery 中使用 ajax

    【讨论】:

      【解决方案5】:

      PHP 的问题在于它会在 javascript 之前执行,因此您不能只添加 php 并尝试将 javascript 变量分配给 php 变量。

      您将不得不使用 ajax 来解决您的问题。 执行 ajax 请求并通过 GET 发送所有值。在此之后,您可以在执行 ajax 请求的 php 文件中使用所有变量。 遍历所有变量并将它们插入到会话中

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 2011-06-12
        • 1970-01-01
        • 2016-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-04
        相关资源
        最近更新 更多