2013-04-25 67 views
0

後,我有這樣的功能:JQuery的 - 重用數據加載

// AJAX MESSAGES SHOWING 
show_msg.on('click', function(e){ 
    var $this = $(this), 
    url = $this.attr('href'), 
    url_info = url + ' .basic_info > *', 
    url_msg = url + ' .contact_messages > *'; 

    basic_info.slideUp('fast', function(){ 
      basic_info.empty().load(url_info, function(){ 
       basic_info.slideDown('fast'); 
     }); 
    }); 

    contact_messages.slideUp('fast', function(){ 
      contact_messages.empty().load(url_msg, function(){ 
       contact_messages.slideDown('fast'); 
     }); 
    }); 
    return false; 
}); 

這是工作,但我使用負載兩次,我想這是不是要做到這一點非常有效的方法。有沒有辦法一次加載數據,然後從這些數據中選擇你需要的?

+2

可以肯定的,你必須將其設置服務器端雖然 – 2013-04-25 12:24:24

回答

1

你可以這樣做:

(function(){ 

    var basicInfoLoaded = false, contactMessageLoaded = false; 

// AJAX MESSAGES SHOWING 
show_msg.on('click', function(e){ 
    var $this = $(this), 
    url = $this.attr('href'), 
    url_info = url + ' .basic_info > *', 
    url_msg = url + ' .contact_messages > *'; 

    basic_info.slideUp('fast', function(){ 
        if(basicInfoLoaded) 
         basic_info.slideDown('fast'); 
        else{ 
         basicInfoLoaded = true; 
      basic_info.empty().load(url_info, function(){ 
        basic_info.slideDown('fast'); 
      }); 
        } 
    }); 

    contact_messages.slideUp('fast', function(){ 
        if(contactMessageLoaded) 
         contact_messages.slideDown('fast'); 
        else{ 
          contactMessageLoaded = true; 
      contact_messages.empty().load(url_msg, function(){ 
       contact_messages.slideDown('fast'); 
       }); 
        } 
    }); 
    return false; 
}); 

})(); 
+0

這一點更多的代碼,然後我希望,但我想它是緩解數據傳輸。 – Sasha 2013-04-25 12:37:43