2012-04-25 21 views
0

我想把它放到ajax中,所以每次点击jQuery中的按钮时,它都会创建一个php会话。有没有可能使用这个?这个javascript函数可以放入ajax吗?如何?

var milisec=00; 
var seconds=60; 
function display(){ 
    if (milisec<=0){ 
     milisec=9 
     seconds-=1 
    } 
    if (seconds<=-1){ 
     milisec=0 
     seconds+=1 
    } 
    else { 
     milisec-=1 
     document.getElementById('counter').innerHTML= seconds+":"+"0"+milisec+"s"; 
     setTimeout(display,100) 
    } 
    if (seconds < 10) { 
     document.getElementById('counter').innerHTML= "0"+seconds+":"+"0"+milisec+"s"; 
    } 
} 
display() 

我需要发布他们花费的时间来使用ajax使用Php会话进入下一页。

+1

你想发送给服务器的是什么? – Joseph 2012-04-25 09:30:18

+3

请使用'setTimeout(display,100)'而不是'setTimeout('display()',100)' - 隐式的'eval()'是邪恶的...... – DaveRandom 2012-04-25 09:31:25

+0

为什么你需要ajax?只有jQuery才够用。 – 2012-04-25 09:33:31

回答

1
var seconds = 60; 
    var milisec = 0; 
    var stop_counter = false;  

    function display(){ 

    if(milisec == 0)  
     seconds = seconds - 1; 

    milisec = milisec - 1; 

    if(milisec == -1) 
     milisec = 10;   

    $('#counter').html((seconds < 10 ? "0" : "") + seconds + ":0" +milisec+ "s");   

    if((seconds == 0 && milisec == 0 && stop_counter == true) == false) 
     setTimeout(function(){ display(); }, 100); 

    }  


    $(document).ready(function(){ 

    display(); 

    $('#button').click(function(){ 

     $.post('myphpfile.php', {time : $('#counter').text()}, function(data){ 

     alert('Data from myphpfile.php: ' + data); 
     stop_counter = true; //stop counter now 

     }); 

    }); 

    }); 

myphpfile.php

echo 'you clicked button when counter was ' . $_POST['time']; 
//you can do any php stuff here 

这段代码应该做你想要什么,但我没有测试它。

函数$ .post()从jQuery library将传递您的数据到PHP脚本,也可以检索一些数据,您可以显示在您的网站或其他东西。

顺便说一句,一秒有1000毫秒,而不是100

对不起,我的英语

+0

而不是在没有数据时循环,我会使用在AJAX请求被触发后触发的回调。在该函数中调用'display()'将允许您在已有数据可用的情况下使用超时和检测来删除整个代码。 – YMMD 2012-04-25 10:17:45

+0

那么你将如何显示用户计数器呢? – miro 2012-04-25 10:41:46

+0

对不起,我错过了他想要一个柜台的部分。无论如何,我不知道如果在短时间内做某件事情时显示计数器是否有用。如果他仍然想要他的柜台,那么我的评论是无用的 - 对不起。 :-) – YMMD 2012-04-25 10:50:37

0

是的,你可以通过

$(document).ready(function(){ 
    $('#button').click(function(){ 
     $.post('session_file.php', {secs : seconds,millisecs:milisec}, function(data){ 
     }); 
    }); 
}); 
合格 "seconds" and "milisec"值在Ajax调用做到这一点

因此,在session_file.php中,您可以在会话中写入secs and millisecs变量的值

相关问题