2010-05-25 2 views
5

Привет У меня вопрос простой. У меня есть этот код ниже, я использую ajax три раза очень похожими способами, только переменные - это данные, переданные и идентификатор цели. Есть ли способ сгруппировать эти инструкции в простой? Thx D.Как сгруппировать правила в jQuery

$('#fld_email').focusout(function() { 
        var request_email = $(this).val();    
        $.ajax({type:"GET", 
          url: "autocomplete.asp", 
          data: "fld=firstname&email="+request_email, 
          beforeSend: function(){$('#fld_firstname').addClass('ac_loading');}, 
          success: function(msg){$('#fld_firstname').val(msg);$('#fld_firstname').removeClass('ac_loading'); } 
          }); 
        $.ajax({type:"GET", 
          url: "autocomplete.asp", 
          data: "fld=lastname&email="+request_email, 
          beforeSend: function(){$('#fld_lastname').addClass('ac_loading');}, 
          success: function(msg){$('#fld_lastname').val(msg);$('#fld_lastname').removeClass('ac_loading');} 
          }); 
        $.ajax({type:"GET", 
          url: "autocomplete.asp", 
          data: "fld=phone&email="+request_email, 
          beforeSend: function(){$('#fld_phone').addClass('ac_loading');}, 
          success: function(msg){$('#fld_phone').val(msg);$('#fld_phone').removeClass('ac_loading');} 
          }); 
        } 
        ); 

ответ

4

попробовать:

$('#fld_email').focusout(function() { 
    var request_email = $(this).val(); 
    processAjax("fld=firstname&email="+request_email, '#fld_firstname'); 
    processAjax("fld=lastname&email="+request_email, '#fld_lastname'); 
    processAjax("fld=phone&email="+request_email, '#fld_phone'); 
}); 

function processAjax(data, id){ 
    $.ajax({type:"GET", 
      url: "autocomplete.asp", 
      data: data, 
      beforeSend: function(){$(id).addClass('ac_loading');}, 
      success: function(msg){$(id).val(msg).removeClass('ac_loading');} 
    }); 
} 
+0

Спасибо! это решение идеально. – Daniele

1

Используйте объект и для управления структурой:

var fields = {firstname:1, lastname:1, phone:1}; 
for (field in fields) { 
    $.ajax({ 
    type:"GET", 
    url: "autocomplete.asp", 
    data: "fld=" + field + "&email=" + request_email, 
    beforeSend: function() { 
     $('#fld_'+field).addClass('ac_loading'); 
    }, 
    success: function(msg) { 
     $('#fld'+field).val(msg); 
     $('#fld'+field).removeClass('ac_loading'); 
    } 
    }); 
} 
+0

Это решение не работает ... Я не знаю, Зачем. – Daniele

+0

Он отлично работает для меня. Что происходит? Вы получили сообщение об ошибке? – Tgr

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