В настоящее время я изучаю рельсы, тогда я подхожу к использованию jquery для отправки ajax для формы, я знаю об ujs, но я не хочу ее использовать. Я хочу использовать чистый javascript или jquery для обучения (понимая это). Итак, у меня есть эта проблема, что когда я нажимаю отправить на кнопку она стала отключить а также, когда я использую этот способИспользование jquery ajax в Rails не работает должным образом.
$(function() {
var form = $('#new_post');
var formData = $(form).serialize();
$(form).submit(function(event) {
$.ajax({
type: 'POST',
url: $(this).attr('action'),
dataType: 'json',
data: formData
}).done(function (response) {
console.log(response);
})
event.preventDefault();
})
});
сериализация formData
пуста, но когда я попробовал этот способ
$(function() {
var form = $('#new_post');
$(form).submit(function(event) {
$.ajax({
type: 'POST',
url: $(this).attr('action'),
dataType: 'json',
data: $(form).serialize()
}).done(function (response) {
console.log(response);
})
event.preventDefault();
})
});
который я вызываю непосредственно $(form).serialize()
внутри ajax. Я не понимаю, в чем разница, но я уже пытался провести некоторое исследование, и я не могу найти ответ.
Кстати, это рельсы.
<%= form_for(post) do |f| %>
<div class="field">
<%= f.label :title %>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :content %>
<%= f.text_area :content %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Спасибо за ваш ответ, но мой вопрос: почему 'formData' пуст, если я объявляю выше не непосредственно внутри ajax, и кнопка отключена после того, как я нажму? любая идея об этом? –
Поскольку переменная формы уже содержит $ ('# new_post'), которая является объектом jQuery, вы не должны снова помещать объект jQuery в другой селектор jQuery. В приведенном выше коде вы также можете попробовать следующее: 'var formData = form.serialize();', а затем использовать formData внутри вызова ajax, он будет работать. – sahil
Что касается отключенных, проверьте сгенерированный html, если в теге кнопки есть какой-либо атрибут html, после загрузки страницы, которая должна быть как 'data-disable-with'. – sahil