2013-10-15 4 views
1

при изменении выбора коробки в модальной панели. Я запускаю запрос ajax, и загрузка данных модальной панели зависит от ответа.избегать множественных привязок 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 функция вызывает несколько раз. Может кто-нибудь мне помочь.

+0

Не уверен, что я понимаю, в чем проблема ... ваш текущий код указывает браузеру называть функцию 'takeAction()' каждый раз, когда выпадающие изменения изменяются (т. Е. Выбирается новая опция). Разве это не то, что вы хотите? Или есть еще одна проблема? –

+0

, но эти функции вызывают несколько раз .. вначале, когда я изменяю выпадающий список, он вызывает только одно время, которое нормально ... когда я снова меняю выпадающую эту функцию, вызывая дважды ... и он продолжает увеличиваться – sree

+0

Хммм, из чего я могу см., этого не должно быть ... возможно, проблема в HTML или в другой части Javascript? Кроме того, что такое .msDropDown()? Это обычное падение? Может быть, проблема в этом. –

ответ

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; 
     } 
    }); 
} 
+0

Я изменил oAJAXRequest на true.then Я только работаю для первого изменения выпадающего списка. Из следующего раза, когда я изменяю выпадающее меню на другое значение, он просто вызывает возврат – sree

0

Я использовал

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

работал для меня.

+0

. Для добавления дополнительной информации используйте ссылку на редактирование. Кнопка «Ответ на сообщение» должна использоваться только для полных ответов на вопрос. – djot

+0

djot, я хочу ответить на мой вопрос, и я ответил в разделе ответов – sree

Смежные вопросы