VisualStudio2010とMVC3をAJAX/JQueryで使用しています。私が抱えている問題は、コードが何かを2回投稿していることです。これは、何かを投稿してからもう一度実行した場合にのみ発生します。
これが私のJSです:
$(document).ready(function () {
BindEvents();
});
function BindEvents() {
$('#OpenCommentDialog').click(function (event, ui) {
var id = $(this).attr('data');
$('#NewCommentDialog').dialog({
open: function (event, ui) {
$('#BugID').val(id);
var form = $('form', '#NewCommentDialog');
form.submit(function (e) {
var comment = form.serialize(true);
CreateComment(comment);
return false;
});
}
});
$('#NewCommentDialog').dialog('open');
return false;
});
}
function CreateComment(comment) {
if (comment != null) {
$.post('/Comments/Create/', comment, function (data) {
if (data == 'Success') {
var id = $.parseQuery(comment);
GetComments(id.BugID);
$('#NewCommentDialog').dialog('close');
}
});
}
}
function GetComments(id) {
$('#Comments').find('tr').remove();
$.getJSON('/Comments/GetComments', { id: id }, function (data) {
if (data != null) {
if (data.length > 0) {
$('#CommentListTemplate').tmpl(data).appendTo('#Comments');
}
}
});
}
私のHTMLページには、CreateCommentPartial.cshtmlファイルを呼び出すJQueryダイアログボックスがあります。ユーザーが入力すると、「CreateComment」関数が呼び出され、「GetComments」が呼び出され、新しいコメントが投稿された後にコメントが更新されます。
さて、ここに問題があります。ページをリロードしてフォームに入力せずに[コメントの作成]リンクをもう一度クリックすると、「CreateComment」が2回起動され、「GetComments」も2回起動されます。 Firebugはこれも示しています。
私はここで何が間違っているのですか?投稿後にページをリロード(F5)した場合、これは行われません。しかし、それは目的を打ち負かします。ページをリロードせずにコメントを複数回送信できるはずです。