すみません、あなたの質問はちょっとわかりにくいです。ちょっと推測ですが、ページを更新せずにフォームを送信する方法を尋ねているようです。もしそうなら、あなたはこのようなことをすることができます:
$('.menut').click(function() {
var phpFile = $(this).attr('id') +'.php';
$('#box1').load(phpFile, function() { // <-- this is your ready function
// once the form has been added to the page,
// add the 'submit' event listener
$('#contactForm').submit(function(e) {
// prevent the form from submitting regularly (causing a page refresh)
e.preventDefault();
// get the data from the form
var data = $(this).serialize();
// submit the form via AJAX and put the response in #box1
$('#box1').load($(this).attr('action'), data);
});
});
});
アップデート:
ready関数は、AJAX 呼び出しで作成する関数であり、コンテンツの読み込みが完了したとき (コンテンツの準備ができたとき) に実行されます。コールバック関数、完了関数、または成功関数と呼ばれることもあります。
上記のコードの 4 行目に追加したコメントを見てください。私があなたの準備ができた機能と呼んでいるものを指摘しました。
あなたの質問では、これを使用しました:
$.get(phpFile, function (data) {
$('#box1').html(data);
});
これは次と同等です:
$('#box1').load(phpFile);
これにより、応答 (フォーム) が から に読み込まphpFile
れ#box1
ます。function (data) { ... }
が準備完了関数です。submit
ここで、イベントをフォームにバインドする必要があります。
私が提案しているようにメソッドに切り替えると、load()
メソッドの2番目のパラメーターとして新しい関数(準備完了関数になります)を渡すだけですload()
。これは、元の回答で与えた解決策です。