避免多重绑定ajax

时间:2013-10-15 05:32:33

标签: javascript jquery

在模态面板中选择框更改。我正在发出ajax请求并加载模态面板数据取决于响应。

我看到最初只有一个请求在第一次尝试时触发。但随着选择选项的次数,它会继续增加。

下面是我的脚本

$(".dds").msDropDown();
$('#dropdown').off('change');
$('#dropdown').on('change', takeAction);

function takeAction(event){
event.preventDefault();
var colour = $('#colors .selected').attr('data-color');
console.log(colour);
new Ajaxinator().jsonPost({
    url :$(event.currentTarget).val(),
    data : {
        name : $(event.currentTarget).attr('title'),
        colour : colour
    },
    success: function (response)
    {   
    $('#dropdown').off('change');

    $('#Data').html(response.Data);
    $('#dropdown').off('change',takeAction);

}
});

};

我认为这是因为新绑定为#dropdown和onchange函数创建的每个ajax请求都是多次调用。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:0)

你可以尝试一下吗?

var oAJAXRequest = false; //GLOBAL VARIABLE

$("#dropdown").unbind('change');
$("#dropdown").bind('change', takeAction);


function takeAction(){

    if(oAJAXRequest != false){
      return;
    }

    event.preventDefault();
    var colour = $('#colors .selected').attr('data-color');
    oAJAXRequest = $.ajax({
        type: 'POST',
        url: $(event.currentTarget).val(),
        data : {
          name : $(event.currentTarget).attr('title'),
          colour : colour
        },
        success: function(data) {
            $('#Data').html(response.Data);
            oAJAXRequest = false;
        },
        error: function(jqXHR, sMessage, oException) {
            oAJAXRequest = false;
        }
    });
}

答案 1 :(得分:0)

我用过

$('#dropdown').off('change',takeAction);

为我工作。