2012-02-24 3 views
1

온라인 시험 도구를 사용하고 있습니다. 데이터베이스 요청 수를 최소화하고 싶습니다. 그래서 한 번에 모든 질문을 테스트에 요청하고 있습니다. 이 후에 나는 사용자가 시도한 모든 질문과 그 대답을 기억해야한다. 내 계획은 다음 줄을 시도 질문의 색상을 변경할 수 있습니다 위의 코드에서이자바 스크립트 변수를 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 ;?> 
}); 

같은 PHP 세션 변수에 대답을 저장하는 것입니다.

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

여기서 id는 질문의 ID입니다. ID가 자바 스크립트 변수가 여기에 있기 때문에 문제가 나는 또한 나는 다음과 같은 확신 다음과 같은 오류

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

받고 있어요된다

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

잘못된 것입니다. 도와주세요. 또한 나는 '세션 변수에 저장하는'이외의 더 나은 솔루션을 게시하는 경우 감사 나에 어떤 숨겨진 양식 변수에

솔루션 저장소 그때 우리는 서버 측 스크립트 언어에 대한 클라이언트 측 스크립트 변수를 결코 생각

+1

가능한 복제본 [PHP에서 javascript를 사용하여 세션 변수 설정] (http://stackoverflow.com/questions/3590293/set-session-variable-using-javascript-in) -php) –

+0

이것은 전혀 작동하지 않습니다. [AJAX 요청.] (http://stackoverflow.com/search?q=%5Bjavascript%5D+php+session+variable+ajax&submit=search) –

+0

참고로 PHP는 서버 측에서 실행됩니다. 당신이 그것을 당신의 자바 스크립트에 포함한다면, 자바 스크립트가로드/실행되기 전에 실행되어 작동하지 않을 것입니다. –

답변

1

1) 문제는 click 블록의 마지막 줄에 있습니다. 나는 당신이 무엇을하려고하는지 완전히 모르지만, <?php ; ?>이 있고 세미콜론으로 인해 당신의 스크립트가 구문 분석에 실패하게됩니다. 첫 번째 부분

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

중 하나 아무것도하지 않습니다. 자바 스크립트 값 $(this).val()을 PHP SESSION 글로벌에 할당하려는 것 같습니다. 할 수 없습니다. 세션 var를 업데이트하려면 서버에 AJAX 호출을 다시 보내야합니다. 이 도움이 $_SESSION["$ques[id]"]

희망 :과 같이 배열을 중첩 할 때

2) 큰 따옴표를 사용합니다.

0

양식을 제출하면 GET 얻을 또는 POST 변수

감사

+0

사용자가 페이지를 새로 고침하여 모든 데이터가 손실 된 것처럼 처리 할 수 ​​없습니다. –

+0

우리는 자바 스크립트 값을 일부 PHP 페이지로 전달할 수있는 하나의 아약스 호출을 만들 수 있으며 그 시간에 해당 데이터를 세션에 저장할 수 있습니다. –

0

수있는 코드 당신이 errors.So가 JQuery와의 아약스를 사용 취소에도 불구하고 예상대로 작동하지 않습니다 보인다

1

답변을 JS에 저장하고 마지막 질문에 답하면 서버로 보냅니다.

$.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'); 
} 

이 방법은 I가 그것을 서버 측 보내기

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()); 
}); 

:

여기에 배열로 저장하는 정말 기본 예제 그냥 자바 스크립트로 질문 표시/숨기기 만하면됩니다.

모든 질문에 대해 페이지를 새로 고치려면 JS 파일 내에 PHP 코드를 사용하지 않는 한 모든 새로운 페이지로드시 PHP로 응답을 저장할 수 있어야합니다.

+0

페이지가 새로 고쳐질 때마다 모든 점에서 데이터가 손실되지 않습니다. . –

0

PHP에서 문제는 자바 스크립트가 실행되기 전에 PHP를 추가하고 PHP 변수에 javascript 변수를 할당 할 수 없다는 것입니다.

문제를 해결하려면 ajax를 사용해야합니다. 아약스 요청을 수행하고 모든 값을 GET으로 보냅니다. 이 후에는 PHP 파일에서 ajax 요청을 한 모든 변수를 사용할 수 있습니다. 모든 변수를 반복하여 세션에 삽입하십시오.

관련 문제