2012-08-22 26 views
0

如何向此腳本添加AJAX回調函數?向此腳本添加AJAX回調函數

此腳本正在使用AJAX加載內容,但不刷新頁面頁面,但它不加載腳本。我想如果我添加回調函數,腳本將加載。

$(document).ready(function() { 

    var hash = window.location.hash.substr(1); 
    var href = $('#nav li a').each(function() { 
     var href = $(this).attr('href'); 
     if (hash == href.substr(0, href.length - 5)) { 
      var toLoad = hash + '.php #conten'; 
      $('#conten').load(toLoad) 
     } 
    }); 

    $('#nav li a').click(function() { 

     var toLoad = $(this).attr('href') + ' #conten'; 
     $('#conten').hide('fast', loadContent); 
     $('#load').remove(); 
     $('#conten').append('<span id="load"></span>'); 
     $('#load').fadeIn('normal'); 
     window.location.hash = $(this).attr('href').substr(0, $(this).attr('href').length - 5); 

     function loadContent() { 
      $('#conten').load(toLoad, '', showNewContent) 
     } 

     function showNewContent() { 
      $('#conten').show('normal', hideLoader()); 
     } 

     function hideLoader() { 
      $('#load').fadeOut('normal'); 
     } 

     return false; 
    }); 
}); 

回答

0

如果我理解正確,核心問題是load()不起作用。這可能是因爲你的網址有一個哈希標記,前面加上一個空格:「url #conten」。

首先,哈希必須連接到url:「url#conten」。 其次,服務器忽略url中的散列值;它們只被客戶端(瀏覽器)解釋。

如果這沒有幫助,我建議您在瀏覽器中使用調試工具來查看服務器的響應是什麼。

+0

你認爲腳本沒有加載,因爲load()....所以我應該改變這個代碼? –

+0

這是一個負載的有效用法:http://api.jquery.com/load/#loading-page-fragments – cjc343

+0

thnx這麼多人的問題因爲spaaaaaaace:D –

0

http://api.jquery.com/load/

第2個參數加載可以是一個回調,或第三,如果你也將數據傳遞到服務器:

$('#element').load(url, function() { console.log('content loaded'); }); 
$('#element').load(url, {some: 'parameters'}, function() { console.log('content loaded'); }); 

很難猜測,可能什麼的甚至不知道頁面佈局和您請求的頁面的一般示例,但是:

  1. 您指定的是來自'#conten'的內容ld取自請求的頁面並放置在當前頁面的'#conten'上 - 是在這兩個頁面上定義的'#conten'?

  2. 您是否嘗試設置斷點以確認負載正在被調用/您是否檢查過發送了請求並驗證其內容?

  3. 您已經在父級和子級作用域中定義了href - 雖然它們似乎沒有混淆,但唯一的變量名稱將減少它們混淆並使代碼更容易閱讀的機會。

如果這些都沒有幫助,您是否有HTML示例來演示您可以提供的問題?