php自动保存代码

时间:2012-02-09 12:48:17

标签: php javascript ajax

我有一个包含100个问题的页面。

当用户提交表单时,数据会保存到表格中(在下一页上)。

我想要做的是在提交表单之前将用户选择的答案保存在表格中每30秒一次。

有人可以指导我走向何方?

如何每30秒运行一次脚本?

非常感谢帮助。

7 个答案:

答案 0 :(得分:1)

您需要使用javascript。

您需要查看以下内容:

  1. 如何使用AJAX发布表单。
  2. window.setInterval
  3. 我使用jQuery,因为它使JS变得容易。

答案 1 :(得分:1)

我不认为你可以单独使用PHP来做到这一点,但是有一个有趣的jQuery函数听起来像你需要的那样:

http://rikrikrik.com/jquery/autosave/

使用cookies但是你可以修改它以使用数据库吗?

答案 2 :(得分:1)

以下代码使用jQuery每秒将一些数据发送到名为store.php的php文件。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function callback() {
    // make ajax request
    $.ajax('store.php',{
       data:'<contains-the-data-to-store>',
       success:function() {

       }
    });
}
$(document).ready(function() {
    setInterval("callback()", 1000);
});
</script>

答案 3 :(得分:0)

我建议使用JS每隔30秒运行一些代码(setTimeout()),将数据存储在cookie中,或者通过ajax将其发送到服务器(尽管我会推荐cookie)

答案 4 :(得分:0)

function sendQuery(){
    AjaxArr = $('#formID *').serializeJSON();

    toAjax(AjaxArr,'yourPHPToSave.php');

    setTimeout('sendQuery',30000);
}

function toAjax(arr,ajaxAdr){
    JsHttpRequest.query(    siteAdr+ajaxAdr+'?x=c'+Math.random(), AjaxArr,
        function(result, errors) {
            if(errors)alert(errors);
            else{
                if(result['error'] && result['error']!='')alert(result['error']);
                if(result['callback'] && result['callback']!='')eval(result['callback']);
            }
        }
    );
}

jQuery.fn.serializeJSON=function() {
    var json = {};
    jQuery.map($(this).serializeArray(), function(n, i){
        json[n['name']] = n['value'];
    });
    return json;
}

致电sendQuery并在yourPHPToSave.php

中检索POST数据

更新:您需要JsonHttpRequest库http://www.phpclasses.org/package/3637-PHP-Process-regular-and-file-upload-AJAX-requests.html和jQuery

答案 5 :(得分:0)

使用Javascript:

var refreshId = setInterval(function()
{
    //get your data here and make an ajax call to update your db table

}, 10000);

此代码将在您的页面上每10秒运行一次。

答案 6 :(得分:0)

<script type="text/javascript">
function func()
{
 // collect data like that
 //var your_data_array = {}
 // your_data_array.Ans1 = $('#someID').val();  
  $.ajax({  
            type: "POST",  
            url:"path/to/page/which/will/save_data.php",  
            data:your_data_array,
            //dataType:'json',

            beforeSend: function()
            {
            },
            success: function(resp)
            {  
                $("#activity").html(resp);
                /*$("#db").html(resp.db);
                $("#time").html(resp.time);*/
            }, 
            complete: function()
            {
            },
            error: function(e)
            {  
            alert('Error: ' + e);  
            }  
        }); 

  var t = setTimeout("func()",30000); 
}
var t = setTimeout("func()",30000);
</script>

根据你的数据fapt()函数在preapare之后将它添加到你的头部。每30秒就会激活一次。