好吧,我偶然发现了一个奇怪的问题。
我第一次发送服务器收到的表单1.如果我发送另一个没有重新加载页面它发送2个完全相同的帖子,如果我再次发送它发送3,依此类推。如果我要发送9个表格,它会在最后发送9个完全相同的帖子。
这是我的代码:
$('#AskACounsel .btn-ask-question').bind("click", function (e) {
e.preventDefault();
var textbox = $('#AskACounselQuestion');
var question = textbox.val();
var product = textbox.data('productid');
if (question.length > 0) {
var params = { question: question, productid: product };
var url = '/FAQService/AddQuestion';
$.ajax({
url: url, success: function (result) {
var infoDiv = $('#AskACounselThankYouView .counsel-info').html(result.Message);
var backDiv = $('#AskACounselThankYouView .counsel-footer .btn-return');
if (result.Success) {
textbox.val("");
backDiv.hide();
} else {
backDiv.show();
}
$('#AskACounselDefaultView').hide();
$('#AskACounselThankYouView').show();
},
type: 'POST',
data: params
});
}
});
答案 0 :(得分:1)
您的代码很可能会传递很多次,即您拥有一个包含代码并调用它来处理click事件的函数。经验法则是绑定应该只发生一次,因为它是一个绑定,而不仅仅是像“on”这样的事件处理程序。
请参阅https://stackoverflow.com/a/8065685/696034的回答 如果你想继续使用bind,那么在代码之前通过$('#AskACounsel .btn-ask-question')取消绑定.unbind(“click”);否则,在代码的初始化部分中绑定事件ONCE。