我想設置我的網站,以便主要區域中的內容通過JavaScript加載(某些頁面需要一段時間才能呈現)。然而,當使用jQuery.load(),jQuery.getScript和jQuery.ajax()時,我遇到了一些邏輯問題。jQuery Ajax加載和getScript
我需要能夠通過getScript加載某些JavaScript文件,以便我可以在加載的內容中使用這些函數等。
- 的index.php - 正顯示主文件(也包含#loading)
- JS /的script.js - 幾個JavaScript文件我需要 - 包含負載代碼
- JS/* JS文件能夠負載
- load.php後內#maincontent使用 - 該文件被加載到#maincontent
的script.js:
$(document).ready(function() {
$('#loading').fadeIn('fast');
$('#maincontent').load('load.php', function() {
$('#loading').fadeOut('fast');
$('#maincontent').fadeIn('slow');
});
$('#navigation li a').click(function() {
$('#maincontent').fadeOut('fast');
$.getScript('js/jquery.contextMenu-1.01.js');
$.getScript('js/jquery-1.5.1.min.js');
$.getScript('js/jquery-ui-1.8.12.custom.min.js');
$.getScript('js/jquery.qtip-2.0.0.min.js');
$.getScript('js/ajax.js');
$.ajax({
method: 'get',
url: 'load.php',
data: 'page=' + $(this).attr('rel'),
beforeSend: function() {
$('#loading').fadeIn('fast');
},
complete: function() {
$('#loading').fadeOut('fast');
},
success: function(html) {
$('#maincontent').fadeIn('slow');
$('#maincontent').html(html);
}
});
});
$.getScript('js/jquery.contextMenu-1.01.js');
$.getScript('js/jquery-1.5.1.min.js');
$.getScript('js/jquery-ui-1.8.12.custom.min.js');
$.getScript('js/jquery.qtip-2.0.0.min.js');
$.getScript('js/ajax.js');
});
正如你所看到的,我想首先加載load.php,而沒有任何URL參數和用戶的任何交互。雖然load.php每次都能正確加載,但javascript代碼並不能說明這一點。有時它可以工作,其他時候我得到一個乾淨的控制檯之前刷新頁面幾次(沒有錯誤)。
控制檯中的錯誤表明js代碼在load.php中被使用之前未正確加載。如果load.php需要一段時間(使用PHP sleep(5)函數進行測試),則尤其如此。
讓我知道如果我需要澄清什麼:)
如果你使用jQuery來加載你的PHP,那麼你不需要再通過'getScript'來包含它。我建議在頁面加載時加載所有JavaScript,並且只通過load()添加內容,特別是避免重新包含框架和插件。 – tvanfosson 2011-04-30 03:30:47