История изменений
Исправление 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;
}