LINUX.ORG.RU

История изменений

Исправление uin, (текущая версия) :

Ой, самое главное то забыл:

var form = document.createElement('form');
var textarea = document.createElement('textarea');
var button = document.createElement('button');

form.appendChild(textarea);
form.appendChild(button);
form.addEventListener('submit', onSubmitFormAction, false);

function onSubmitFormAction(e) {
     
     preventDefault(e); //останавливает стандартное поведение браузера
     
     var xhr = new XMLHttpRequest(),
         fd  = new FormData(),
         foo = function () {
             if (this.readyState !== 4)
                 return;
             if (this.status === 304) {
                 console.warn(this.statusText);
             } else {
                 // ответ от сервера: this.responseText;
                 // адрес сервера: this.responseURL
                 // очищать textarea и все остальные поля придется вручную textarea.value = '';
                 // либо просто обновить / прыгнуть на какую надо страничку через document.location.href
             }
         }

     //форму лучше разбирать вот этой штукой во избежании ошибок: https://gist.github.com/bullgare/5336154
     //но если в форме только одна текстарея, то можно как в первом варианте оставть, только 'text' заменить на то что там должно быть
     for (var i = 0, data = serialize(form); i < data.length; i++) {
         fd.append(data[i].name, data[i].value);
     }

     xhr.onreadystatechange = foo;
     xhr.open('POST', '/action.php', true);
     xhr.send(fd);
}

function preventDefault(e) {
     if (e.preventDefault)
         e.preventDefault();
     else
         e.returnValue = false;
}

Исходная версия uin, :

Ой, самое главное то забыл:

var form = document.createElement('form');
var textarea = document.createElement('textarea');
var button = document.createElement('button');

form.appendChild(textarea);
form.appendChild(button);
form.addEventListener('submit', onSubmitFormAction, false);

function onSubmitFormAction(e) {
     
     preventDefault(e); //останавливает стандартное поведение браузера
     
     var xhr = new XMLHttpRequest(),
         fd  = new FormData(),
         foo = function () {
             if (this.readyState !== 4)
                 return;
             if (this.status === 304) {
                 console.warn(this.statusText);
             } else {
                 // ответ от сервера: this.responseText;
                 // адрес сервера: this.responseURL
                 // очищать textarea и все остальные поля придется вручную textarea.value = '';
                 // либо просто обновить / прыгнуть на какую надо страничку через document.location.href
             }
         }

     //форму лучше разбирать вот этой штукой во избежании ошибок: https://gist.github.com/bullgare/5336154
     //но если в форме только одна текстарея, то можно как в первом варианте оставть, только 'text' заменить на то что там должно быть
     for (var i = 0, data = serialize(form); i < data.length; i++) {
         fd.append(data[i].name, data[i].value);
     }

     xhr.onreadystatechange = foo;
     xhr.open('POST', '/action.php', true);
     xhr.send(fd);
}

function preventDefault(e) {
     if (e.preventDefault)
         e.preventDefault();
     else
         e.returnValue = false;
}