2010-05-25 27 views
5

嗨,我有一個簡單的問題。我在下面的代碼中,我以非常類似的方式三次使用ajax,唯一改變的是傳遞的數據和目標的id。有沒有辦法將這些說明分組爲一個簡單的方法? 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 2010-05-25 08:53:45

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 2010-05-25 08:52:56

+0

它適合我。怎麼了?你有錯誤嗎? – Tgr 2010-05-25 09:44:04