我有一个灯箱形式,以新的条目添加到我的数据表中,此代码箱工作形式:

$("#add-quotation").click(function(event) {
event.preventDefault(); 
var customer_id = $(this).attr('data-customer');    
$.nmManual(
    '#quotation_manage',{
        sizes: {    // Size information
        w: 500, // Initial width
        h: 500  // Initial height
    }
    });
    $('#quotation_submit').live('click', function(event){
    event.preventDefault();
    if(typeof($.nmTop()) != "undefined"){
        $.nmTop().close();
    }   
    var loading = $('.loading-notification');
    loading.removeClass('hidden');
    var date = $('#date_activate').val();
    var budget = $('#budget').val();
    var hospital = [$('#hospital').val(), $('#hospital option:selected').text()];
    var dental = [$('#hospital').val(), $('#hospital option:selected').text()];
    var optical = [$('#optical').val(), $('#optical option:selected').text()];
    var doctor = [$('#doctor').val(), $('#doctor option:selected').text()];
    $.ajax({
                type: 'POST',
                data: 'create=true&customer_id=' + customer_id + '&date=' + date + '&budget=' + budget + '&hospital=' + hospital[0] + '&dental=' + dental[0] + '&optical=' + optical[0] + '&doctor=' + doctor[0], 
                url: 'quotation.php', 
                dataType: 'json',
                async: false,
                success: function(result){
                    if (result){
                    oTable.fnAddData([
                        result.id,
                    result.date,
                    budget,
                    hospital[1],
                    dental[1],
                    optical[1],
                    doctor[1],
                    '',
                    '',
                    '',
                    'test'
                    ]);
            }
        loading.addClass('hidden');
                }
        });
    });
});

它工作得很好但有时会发送3个或更多查询,我该如何防止这种情况? 通常它应该只发送一个查询。

===============>>#1 票数:2 已采纳

单击#add-quotation ,将另一个单击事件绑定到#quotation_submit 因为你正在使用live你可以安全地将其移出。 尝试这个:

$("#add-quotation").click(function(event) {
    event.preventDefault();
    var customer_id = $(this).attr('data-customer');
    $.nmManual('#quotation_manage', {
        sizes: { // Size information
            w: 500,
            // Initial width
            h: 500 // Initial height
        }
    });
});
$('#quotation_submit').live('click', function(event) {
    event.preventDefault();
    if (typeof($.nmTop()) != "undefined") {
        $.nmTop().close();
    }
    var loading = $('.loading-notification');
    loading.removeClass('hidden');
    var date = $('#date_activate').val();
    var budget = $('#budget').val();
    var hospital = [$('#hospital').val(), $('#hospital option:selected').text()];
    var dental = [$('#hospital').val(), $('#hospital option:selected').text()];
    var optical = [$('#optical').val(), $('#optical option:selected').text()];
    var doctor = [$('#doctor').val(), $('#doctor option:selected').text()];
    $.ajax({
        type: 'POST',
        data: 'create=true&customer_id=' + customer_id + '&date=' + date + '&budget=' + budget + '&hospital=' + hospital[0] + '&dental=' + dental[0] + '&optical=' + optical[0] + '&doctor=' + doctor[0],
        url: 'quotation.php',
        dataType: 'json',
        async: false,
        success: function(result) {
            if (result) {
                oTable.fnAddData([
                    result.id, result.date, budget, hospital[1], dental[1], optical[1], doctor[1], '', '', '', 'test']);
            }
            loading.addClass('hidden');
        }
    });
});

===============>>#2 票数:0

使用one()vs live()可以防止多次提交。 与使用on()相同,除了在第一次事件发生后删除处理程序。

http://api.jquery.com/one/

  ask by Awea translate from so

未解决问题?本站智能推荐:

1回复

防止多个ajax查询

我有一些借助ajax获得的内容。 同样在此内容中,我也需要做一些ajax,所以我使用.ajaxComplete()这就是我想要的方法。 一切正常,但是当我第二次单击.deleteParticipant或.editParticipant时,它将调用两个ajax查询,例如3-4等。避免这种
1回复

如何防止多个Ajax请求?

我已经花了2天的时间找到解决方案,但是stackoverflow对此没有正确的答案。 我有2个Ajax函数首先加载onload值, 它正在工作并完美地提供数据。 它有一个onclick函数调用,如“ readSingleMovie2()”,我想将此值发送给另一个ajax函数。 这是
1回复

jQuery防止多个Ajax调用

我在通过ajax加载的网页中具有<a>元素: 以下脚本将使<a>元素执行ajax调用 当单击链接时,仅一次生成多个ajax调用。 我该如何解决?
3回复

防止来自ajax的多个请求

我有“更多加载”按钮,如果单击得足够快,它将两次加载相同的内容,因此我想防止它。 这就是我用ajax调用更多负载的方式:
1回复

防止多个ajax发布

对于下面的ajax请求,我看到多个请求已发送到服务器。 我该如何预防。 这是调用ajax发布的功能。 是什么引起了这种现象,我该如何预防
3回复

如何防止多个Ajax请求

我想向下滚动页面到某一点(#first_column DIV的高度),将从服务器端获取json并将内容添加到#first_column。 现在问题是当我向下滚动到#first_column的高度时,几乎同时有很多Ajax调用。 我想要的是向下滚动到#first_column的高度,调用服
9回复

Ajax,防止点击多个请求

我试图在用户点击登录或注册按钮时阻止多个请求。 这是我的代码,但它不起作用。 只是第一次工作正常,然后返回false .. 有任何想法吗? 谢谢!
3回复

防止多个ajax调用

我正在使用以下代码通过加载时的ajax从服务器获取内容。 但是在特定情况下,我有一些完全相同的链接。 在这种情况下,如何防止我的代码对同一网址进行多个服务器/ ajax调用,但替换不同的div。
1回复

点击后多个ajax查询

我在应用程序的每一行中都有一个带有删除和刷新按钮的表。单击此按钮时,我的应用程序向表中添加了适当的行,但分别在此按钮上分别单击了1,2,3次后才进行了2,4,8次。 这是创建表和按钮处理程序的代码片段。 一张桌子:
5回复

禁用表单和所有包含的元素,直到ajax查询完成(或另一个解决方案以防止多个远程请求)

我有一个带有输入和选择的搜索表单,当任何输入/选择被更改时,我运行一些js然后用jquery进行ajax查询。 我希望阻止用户在请求进行过程中对表单进行进一步更改,因为他们可以立即启动多个远程搜索,从而有效地导致不同搜索之间的竞争。 似乎最好的解决方案是在等待请求返回时阻止用户与表单交互