parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

G_Z 14.12.2016 10:47 / 14.12.2016 10:48

Мне для универсальности как лучше поступить?
<form name="sendForm" id="sendForm" method="POST" enctype="multipart/form-data" accept-charset="UTF-8" action="$sLoaderUri" onsubmit="return false">
...
</form>
Да, у формы нужно обязательно указать action.
Более того, форма должна работать обычным образом и очень неплохо уметь принимать данные и классическим способом.

В случае, если AJAX-загрузка не сработает или будет недоступна по каким-либо причинам, скажем, будут проблемы с загрузкой или интерпретацией скриптов, пользователь всё равно сможет отправить данные.

А это, в свою очередь, значит, что добавлять JS-обработку формам нужно не сразу, а после загрузки страницы.
Если что-то пойдёт не так, форма будет работать без JS и данные всё равно можно будет отправить.
$(function(){
	$('.ajax-form').on('submit', function(){
		…
		return false;
	});
})
Иначе return false отключит submit формы (что и требуется после добавления AJAX-обработки) сразу и сделает форму работоспособной только с JS.
Как сделать чтобы в $('#sendForm').on('submit', function(){…})
#sendForm передавался динамически?
Допустим разные формы с разными ID, чтобы код ajax не повторять?
Привязываться не к ID, а, например, к классу.
Вариантов масса.
$('.simple-ajax-form').on('submit', function(){})

$('.complex-ajax-form').on('submit', function(){})
И получается в
$.ajax({
...
url: uri,
...
});
не нужно указывать url, если есть action=""?
В функции просто нужно будет брать значение атрибута формы, это будет работать при любом action.
$('.simple-ajax-form').on('submit', function(){
	var $this = $(this),
		url = $this.attr('action'),
		method = $this.attr('method');
	…
	$.ajax({
		…
	    	method: method,
		url: url,
		…
	});
})