現在、私はレールを勉強していますので、jqueryを使ってフォームにAjaxを送信するようになっています。私はujについて知っていますが、使用したくありません。私は純粋なjavascriptまたはjqueryを学習目的に使用したい(それを理解する)。だから、私は私が送信ボタンをクリックしたときにはそれがとを無効になり、この問題を持っても、私はこの方法を使用する場合Railsでjquery ajaxを使用すると正しく動作しません。
$(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();
})
});
私はajax内で直接$(form).serialize()
を呼び出しています。私は違いは何かを理解していないが、私はすでにいくつかの研究をしようとしたが、私は答えを見つけることができない。
ところで、これはレールが形成されます。
答えていただきありがとうございます。しかし、なぜ私は上記のajaxの中に直接宣言していない場合、私はそれをクリックした後にボタンが無効になっていると 'formData'が空であるのですか?それについての任意のアイデア? –
フォーム変数にはすでにjQueryオブジェクトである$( '#new_post')が含まれているので、もう一度jQueryオブジェクトを別のjQueryセレクタに配置しないでください。上記のコードでは、 'var formData = form.serialize();'のように試してから、ajax呼び出しの中でformDataを使うと動作します。 – sahil
無効になっている場合は、生成されたhtmlをチェックしてください。ボタンタグにhtml属性があれば、 'data-disable-with'のようなページが読み込まれます。 – sahil