2009-02-09 73 views
3

我有一個JavaScript文件幾種更新方法,用於更新我的Ajax應用程序,就像這樣:javascript或php - 什麼是最有效的更新?

function updateByPk(layer, pk) { 
    url = "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random(); 
    update(layer, url); 
} 


function updateByQuery(layer, query) { 
    url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random(); 
    update(layer, url); 
} 

function updateByPage(layer, query, pg) { 
    url = "get_records.php?cmd=GetRecordSet&query="+query+"&pg="+pg+"&sid="+Math.random(); 
    update(layer, url); 
} 

我想知道它是否會更有效嚴格通過PHP做的事情像分頁和這樣的,只是通過重新加載頁面,而不是使用ajax方法。我不確定哪種方法更有效率,或者每種方法是否有優缺點。

+0

這不是javascript中的分頁,您只需加載一個php頁面。 update()做什麼? – 2009-02-09 22:19:33

回答

1

如果我得到這個問題,那麼你是問分頁和類似的問題是更好的通過Javascript + AJAX完成,還是通過調用服務器來完成?

我個人認爲只是使用請求到服務器。 AJAX在這種情況下是不相關的,除了「bling」因素(是的,這是一個技術術語:P)

如果您正在爲應用程序正確編寫應用程序,並且需要編寫「直接調用服務器「位(當某人關閉Javascript並點擊其中一個」下一頁「鏈接時)。

有Javascript意味着1)你有額外的代碼來維護。 2)你打破後退按鈕。如果您只實現AJAX方法,那麼您無法訪問其他頁面上的數據。如果你喜歡,你還沒有簡單的方法鏈接到它(通過複製地址欄)。

我個人只會使用AJAX來爲頁面添加功能,而不需要使用任何其他功能,例如,檢查填寫註冊表單時是否需要輸入用戶名。自動建議等。

1

Ajax在客戶端和服務器上會更容易。客戶端不會有滾動重置,也不必檢查樣式表和圖像等所有新資產,並且可以更快地加載內容。服務器不必使用頁眉和頁腳生成整個頁面;它只需要生成更改頁面的一部分。

不利的一面是,使用良好的用戶界面(添加加載微調器和相關的裝飾物)編寫起來有點困難。如果客戶端已禁用JavaScript,則會導致頁面中斷。所以真的,如果你做ajax的話,你都需要這兩者。儘管如此,在Ajax的優雅降級中編碼很容易。

<a href="/search?term=foo&amp;page2" onclick="loadPageViaAjax(2); return false"> 
    Next 
</a> 

這是一個鏈接的例子,即使沒有javascript也可以工作。如果javascript處於啓用狀態,觸發onclick,則會發生ajax,並停止與return false之間的鏈接。如果沒有JavaScript,則忽略onclick,並且正常地遵循鏈接。

+0

我沒有問題使用調用服務器做分頁,因爲我更喜歡你描述的優點。我的問題是,我不知道在這種情況下是否可能。 – 2009-02-12 21:28:25

+0

我有一個文件,index.php與3層,默認情況下只有導航。每個導航鏈接都是一個查詢,通過ajax將記錄列表加載到第二個圖層中,並且該圖層中的鏈接將內容加載到最終內容圖層中。 – 2009-02-12 21:28:56

2

與尋呼AJAX優點:

  • 潛在少發送的數據,這意味着更快的頁面加載和更少的帶寬使用。
  • 流暢的用戶體驗

尋呼沒有AJAX的優勢:

  • 後退和前進按鈕將在瀏覽器中運行
  • 你可以有一個特定的頁面的URL(儘管你可以做到這一點與AJAX也與頁面。PHP#編號和副招)
  • 也許更容易一點編寫和維護
0

這取決於你的效率的定義。通過AJAX加載新內容將減少通過網絡傳輸的字節數,但如果您無法將動態內容緩存到靜態文件(我假設您將在重新加載頁面時),則服務器上的字節數可能會更加劇烈。但是,過多地依賴AJAX可能會導致您的頁面對於瀏覽器不支持JavaScript(它們存在)的用戶而言更不易訪問,並且可能會損害您的網站被搜索引擎編入索引的功能。兩種情況中最好的方法是讓鏈接指向重新加載的頁面,但用JavaScript重寫該行爲以通過AJAX加載新內容。

相關問題