Javascript 在浏览器上重新加载/添加新选项卡时提交表单
我刚从worldofwebcraft.com获得了一些用于我的项目考试系统的代码。我只懂PHP,实际上我对Java脚本一无所知,因为我们的老师还没有教我们。请帮助我如何在用户重新加载页面或打开新选项卡时自动提交表单 代码如下: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; $
<?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()
是您的“提交表单”处理程序。无法从代码中准确分辨。什么形式?我看不到表单代码…我猜标记丢失了你救了我一天的银行好友:)