2010-05-25 23 views
5

Hola, tengo una pregunta simple. Tengo este código a continuación, utilizo ajax tres veces de manera muy similar, las únicas cosas que cambian son los datos que pasan y la identificación del objetivo. ¿Hay alguna manera de agrupar estas instrucciones en una simple? Thx D.Cómo agrupar reglas en 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');} 
          }); 
        } 
        ); 

Respuesta

4

intento:

$('#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

¡Gracias! esta solución es perfecta. – Daniele

1

Utilice un objeto y el para el control de la estructura:

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

Esta solución no funciona ... no sé por qué. – Daniele

+0

Funciona bien para mí. ¿Lo que pasa? ¿Le da un error? – Tgr