は次のとおりです。
あなたが送信ボタンをフォーム上でクリックすると、ページがリロードされません、フォームからのデータは、のために別のページに送信される代わりに、そのページの処理とHTML出力が現在のページのフォームに置き換わります。具体的には、私はコメントフォームを追加する必要はなく、ページをリロードする必要はありません(そのページのFlash Playerにビデオストリーミングがあり、誰かがコメントを投稿するたびにページがリロードされると、お金と帯域幅)。ここで
は、フォームのマークアップです:<div id="add-media-comment">
<form enctype="application/x-www-form-urlencoded" method="post" action="/view/add-media-comment/id/12"><ol>
<li><label for="body" class="required">Body</label>
<div class="element">
<textarea name="body" id="body" rows="10" cols="50"></textarea></div></li>
<li><div class="button">
<input type="submit" name="add_comment" id="add_comment" value="Submit" class="input-submit" /></div></li></ol></form>
</div>
そして、ここで私が使用しているJavaScriptコードです:
$('#add-media-comment form').submit(function() {
// this is taken from the same page
// I have tested this with alert() and yes
// it is returning correct values
var id = $('#media-photo img').attr('id');
var url = '/view/add-media-comment/id/' + id;
// let's submit the form to another page
$.post(url, $(this).serialize(), function() {
// and replace the content of #add-media-comment
// with the resulting HTML from the submission page
$('#add-media-comment').html(data);
}, 'html');
return false;
});
何が起こることは、送信ボタンをクリックした後、正確に何も起こらないということです。ページはリロードされませんが、フォームを送信しているページのコードは実行されません。
私はフォームを送信したページは実行されません。 –
$ .postコールバックでアラート(データ)を試すと何も起こりません。 –
フォーム送信イベントにバインドする代わりに、そのコードをボタンのクリックイベントにバインドします。 – karim79