Javascript 在浏览器上重新加载/添加新选项卡时提交表单

Javascript 在浏览器上重新加载/添加新选项卡时提交表单,javascript,php,jquery,Javascript,Php,Jquery,我刚从worldofwebcraft.com获得了一些用于我的项目考试系统的代码。我只懂PHP,实际上我对Java脚本一无所知,因为我们的老师还没有教我们。请帮助我如何在用户重新加载页面或打开新选项卡时自动提交表单 代码如下: <?php if(isset($_GET['question'])){ $question = preg_replace('/[^0-9]/', "", $_GET['question']); $next = $question + 1; $

我刚从worldofwebcraft.com获得了一些用于我的项目考试系统的代码。我只懂PHP,实际上我对Java脚本一无所知,因为我们的老师还没有教我们。请帮助我如何在用户重新加载页面或打开新选项卡时自动提交表单

代码如下:

<?php if(isset($_GET['question'])){
    $question = preg_replace('/[^0-9]/', "", $_GET['question']);
    $next = $question + 1;
    $prev = $question - 1; ?>

<script type="text/javascript">
function countDown(secs,elem) {
    var element = document.getElementById(elem);
    element.innerHTML = "You have "+secs+" seconds remaining.";
    if(secs < 1) {
        var xhr = new XMLHttpRequest();
        var url = "userAnswers.php";
            var vars = "radio=0"+"&qid="+<?php echo $question; ?>;
            xhr.open("POST", url, true);
            xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xhr.onreadystatechange = function() {
        if(xhr.readyState == 4 && xhr.status == 200) {
            alert("You did not answer the question in the allotted time. It will be marked as incorrect.");
            clearTimeout(timer);
    }
}
xhr.send(vars);
        document.getElementById('counter_status').innerHTML = "";
        document.getElementById('btnSpan').innerHTML = '<h2>Times Up!</h2>';
        document.getElementById('btnSpan').innerHTML += '<a href="exam.php?question=<?php echo $next; ?>">Click here now</a>';

    }
    secs--;
    var timer = setTimeout('countDown('+secs+',"'+elem+'")',1000);
}
</script>
<script>
function getQuestion(){
    var hr = new XMLHttpRequest();
        hr.onreadystatechange = function(){
        if (hr.readyState==4 && hr.status==200){
            var response = hr.responseText.split("|");
            if(response[0] == "finished"){
                document.getElementById('status').innerHTML = response[1];
            }
            var nums = hr.responseText.split(",");
            document.getElementById('question').innerHTML = nums[0];
            document.getElementById('answers').innerHTML = nums[1];
            document.getElementById('answers').innerHTML += nums[2];
        }
    }
hr.open("GET", "questions.php?question=" + <?php echo $question; ?>, true);
  hr.send();
}
function x() {
        var rads = document.getElementsByName("rads");
        for ( var i = 0; i < rads.length; i++ ) {
        if ( rads[i].checked ){
        var val = rads[i].value;
        return val;
        }
    }
}
function post_answer(){
    var p = new XMLHttpRequest();
            var id = document.getElementById('qid').value;
            var url = "userAnswers.php";
            var vars = "qid="+id+"&radio="+x();
            p.open("POST", url, true);
            p.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            p.onreadystatechange = function() {
        if(p.readyState == 4 && p.status == 200) {
            document.getElementById("status").innerHTML = '';
            alert("Your answer was submitted.");
            var url = 'exam.php?question=<?php echo $next; ?>';
            window.location = url;
    }
}
p.send(vars);
document.getElementById("status").innerHTML = "processing...";

}
</script>
<script>
window.oncontextmenu = function(){
    return false;
}
    document.onkeydown = function() {
        if(event.keyCode == 116) {
                event.returnValue = false;
                event.keyCode = 0;
                return false;
               }
    }


</script>

功能倒计时(秒、元素){
var元素=document.getElementById(elem);
element.innerHTML=“您还有“+秒+”秒。”;
如果(秒<1){
var xhr=new XMLHttpRequest();
var url=“userAnswers.php”;
var vars=“radio=0”+”和qid=“+;
xhr.open(“POST”,url,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4&&xhr.status==200){
警告(“您没有在分配的时间内回答问题。它将被标记为不正确。”);
清除超时(计时器);
}
}
xhr.send(vars);
document.getElementById('counter_status')。innerHTML=“”;
document.getElementById('btnSpan')。innerHTML='Times Up!';
document.getElementById('btnSpan')。innerHTML+='';
}
秒--;
var timer=setTimeout('倒计时('+secs+',“'+elem+”),1000);
}
函数getQuestion(){
var hr=新的XMLHttpRequest();
hr.onreadystatechange=函数(){
如果(hr.readyState==4&&hr.status==200){
var response=hr.responseText.split(“|”);
如果(响应[0]=“已完成”){
document.getElementById('status').innerHTML=response[1];
}
var nums=hr.responseText.split(“,”);
document.getElementById('question').innerHTML=nums[0];
document.getElementById('answers').innerHTML=nums[1];
document.getElementById('answers').innerHTML+=nums[2];
}
}
hr.open(“GET”,“questions.php?question=“+,true”);
hr.send();
}
函数x(){
var rads=document.getElementsByName(“rads”);
对于(变量i=0;i
我会做如下事情:

window.onbeforeunload = function() {
    post_answer(); 
}

如果
post\u answer()
是您的“提交表单”处理程序。无法从代码中准确分辨。

什么形式?我看不到表单代码…我猜标记丢失了你救了我一天的银行好友:)