При AJAX-запросе не посылается кнопка 'submit'
У меня есть HTML-форма. На кнопку 'submit' я вешаю обработчик события для посылки это формы по AJAX:
<input type="submit" name="submit" value="submit" onclick="sendForm('myform', 'messagediv'); return false;">
Для AJAX-запроса использую FormData:
function sendForm(formId, messageDivId){
var formUrl = $('#'+formId).attr('action');
var formaData = new FormData($('#'+formId)[0]);
$.ajax({
type: 'POST',
url: formUrl,
data: formaData,
processData: false,
contentType: false,
});
}
К сожалению, само значение кнопки 'submit' при этом по AJAX-у не посылается. Как будто она и не была нажата. Какие способы есть с помощью AJAX отправить значение именно той кнопки 'submit', на которую нажали? |
Это понятно. А если у меня на странице несколько кнопок 'submit'? И каждая должна делать свой собственный Ajax-запрос. Какие-то удобные решения есть для таких случаев? Вроде того, что считывается атрибут 'name' кнопки и вставляется в функцию. Только я не знаю, как такое реализуется.
|
<form id="myform" action="/add.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="myhidden" value="2013">
Ваше имя: <input type="text" name="myname" id="myfile">
<br>
Ваш возраст: <input type="text" name="myage" value="tryr">
<br>
<input type="submit" name="submit" value="submit" onclick="sendWholeForm('myform', 'messagediv'); return false;">
<input type="submit" name="submit_2" value="submit" onclick="sendWholeForm('myform', 'messagediv'); return false;">
</form>
Вот такая форма, ничего сложно. Это основа html-форм. В одной форме может быть две и более кнопок "submit". На сервер посылается только значение той кнопки, которую нажал пользователь, а остальные игнорируются. Мне важно, чтобы при AJAX-е посылалось значение нажатой кнопки submit, так как var formaData = new FormData($('#'+formId)[0]); не берёт из формы ни одного значения из кнопок submit. Вот я и думаю, какое решение можно придумать, чтобы всё работало просто и изящно. |
sendForm(this, 'myform', 'messagediv'); Цитата:
function sendForm(button, formId, messageDivId) Цитата:
formaData.append(button.name, button.value); |
Цитата:
|
Цитата:
button.onclick = function sendForm() {
alert(this instanceof HTMLInputElement); // alerts "true"
};
Через атрибут this тоже указывает на кнопку, чем я и воспользовался в предыдущем коде. |
Rise,
большое спасибо! Это то, что нужно было. В конечном варианте у меня получилось так:
$(document).ready(
function(){
$('#myform input[type=submit]').each(
function() {
$(this).click(function(){
sendWholeForm('myform', 'messagediv', this);
return false;
});
}
);
}
);
|
Цитата:
Про each().. мне казалось, что $() возвращает массив элементов, поэтому к нему и надо применять each(). Если в форме несколько кнопок submit, то по всем им, наверное, и надо пройтись. |
Rise, ну ещё раз спасибо за конструктивные советы :)
|
скажите, а при использовании события onsubmit определить по нажатию какой из кнопок это произошло, возможно?
|
| Часовой пояс GMT +3, время: 22:43. |