присвоение переменной javascript переменной сеанса php - PullRequest
1 голос
/ 24 февраля 2012

Я делаю онлайн-экзаменационный инструмент.Я хочу минимизировать количество запросов к базе данных.Поэтому я прошу все вопросы теста сразу.После этого я должен запомнить все вопросы, которые пытался сделать пользователь, и их ответы.Мой план состоит в том, чтобы сохранить ответы в переменной сеанса 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 - это идентификатор вопроса.Проблема в том, что я получаю следующую ошибку

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

Также я почти уверен, что следующее неверно

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

, поскольку id здесь является переменной javascript.Пожалуйста, помогите мне.Также я ценю, если будет опубликовано любое другое лучшее решение, чем «сохранение в переменных сеанса»

Ответы [ 5 ]

1 голос
/ 24 февраля 2012

Просто сохраните ответы в 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 при каждой новой загрузке страницы, и это должно быть довольно простым, если вы не пытаетесь использовать код PHP внутри вашего файла JS.

1 голос
/ 24 февраля 2012

1) Ваша проблема лежит в последней строке блока click. Я не совсем уверен, что вы пытаетесь сделать, но у вас есть <?php ; ?>, и точка с запятой приводит к тому, что ваш скрипт не может проанализировать. Первая часть

<?php $_SESSION['ques['id']']= ?>

тоже ничего не делает. Похоже, вы пытаетесь присвоить значение Javascript $(this).val() глобальному PHP SESSION, что вы не можете сделать. Вам нужно будет перезвонить AJAX на ваш сервер, чтобы обновить ваш сеанс var.

2) Используйте двойные кавычки при вложении массивов следующим образом: $_SESSION["$ques[id]"]

Надеюсь, это поможет.

0 голосов
/ 24 февраля 2012

Проблема с PHP заключается в том, что он выполняется перед javascript, поэтому вы не можете просто добавить php и попытаться присвоить переменную javascript переменной php.

Вам придется использовать ajax для решения вашей проблемы. Сделайте ajax-запрос и отправьте все значения через GET. После этого вы можете использовать все переменные в вашем php-файле, где вы выполняли ajax-запрос. Выполните итерацию всех переменных и вставьте их в сеанс

0 голосов
/ 24 февраля 2012

Код, похоже, не будет работать, как вы ожидали, даже если вы удалите ошибки. Так что используйте ajax в jquery

0 голосов
/ 24 февраля 2012

Я думаю, что мы никогда не получим никакой переменной сценария на стороне клиента на язык сценария на стороне сервера

Решение хранится в некоторой скрытой переменной формы, а затем во время отправки формы вы можете получить переменную GET или POST

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...