2010-05-25 4 views
5

Hi Ich habe eine einfache Frage. Ich habe diesen Code unten, ich benutze Ajax dreimal auf sehr ähnliche Weise die einzigen Dinge, die sich ändern, sind die übergebenen Daten und die ID des Ziels. Gibt es eine Möglichkeit, diese Anweisungen in einem einfachen zu gruppieren? Thx D.Wie man Regeln in jquery gruppiert

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

Antwort

4

Versuch:

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

Danke! Diese Lösung ist perfekt. – Daniele

1

ein Objekt verwenden, und die für Kontrollstruktur:

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

Diese Lösung funktioniert nicht ... Ich weiß nicht, Warum. – Daniele

+0

Es funktioniert gut für mich. Was geschieht? Erhalten Sie einen Fehler? – Tgr