AJAX/JQuery와 함께 Visual Studio 2010 및 MVC 3을 사용하고 있습니다. 내가 가지고있는 문제는 코드가 무언가를 두 번 게시한다는 것입니다. 당신이 무언가를 올렸을 때만 일어난다. 그런 다음 다시해라.MVC 3 AJAX 함수 두 번 게시
$(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와 대화 상자가 있습니다 :
여기 내 JS입니다. 사용자가이를 채울 때 "CreateComment"함수를 호출하고 "GetComments"함수를 호출하고 새 함수가 게시 된 후 주석을 새로 고칩니다.
이제 문제가 있습니다. 페이지를 다시로드하고 양식을 채우지 않고 "Create Comment"링크를 다시 클릭하면 "CreateComment"가 두 번 실행되고 "GetComments"도 두 번 실행됩니다. 방화 광이 나에게도 이것을 보여줍니다.
여기서 내가 뭘 잘못하고 있니? 게시 한 후 페이지 (F5)를 다시로드하면이 작업이 수행되지 않습니다. 그러나 그것은 그 목적을 이깁니다. 페이지를 다시로드하지 않고도 여러 번 의견을 제출할 수 있어야합니다.
스크립트는 위의 자바 스크립트 파일에 있습니다. 공유 폴더의 _Layout.cshtml 파일 헤더에 스크립트를 선언했습니다. –
혼자서 대답을 찾았습니다. "form.unbind ('submit');"을 추가해야합니다. 전에 form.submit –