Ajax发送重复的标头

时间:2016-02-05 10:17:15

标签: javascript jquery ajax

好吧,我偶然发现了一个奇怪的问题。

我第一次发送服务器收到的表单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    
        });
    }    
});

1 个答案:

答案 0 :(得分:1)

您的代码很可能会传递很多次,即您拥有一个包含代码并调用它来处理click事件的函数。经验法则是绑定应该只发生一次,因为它是一个绑定,而不仅仅是像“on”这样的事件处理程序。

请参阅https://stackoverflow.com/a/8065685/696034的回答 如果你想继续使用bind,那么在代码之前通过$('#AskACounsel .btn-ask-question')取消绑定.unbind(“click”);否则,在代码的初始化部分中绑定事件ONCE。