2013-05-28 15 views
3

我想知道是否有在性能比較任何區別(或差的話)

介於此:

$(selector).load('page #myid'); 

$.get('page',function(data){ 
    $(selector).html($(data).find('#myid')); 
    /* depending the dom tree it should be .filter() */ 
}) 
+1

@Alexander Sagen很好地描述了它在http://stackoverflow.com/questions/3870086/difference-between-ajax-and-get-and-load –

+2

這兩個例子幾乎都會做同樣的事情,參見。 [源代碼](https://github.com/jquery/jquery/blob/master/src/ajax.js#L133),即將響應解析爲HTML,應用選擇器並將結果插入到DOM中。我猜測性能差異可以忽略不計。 – jensgram

+0

我想知道這一點。在我的經驗中,load()比自己「解析」結果要快。 – powerbuoy

回答

1

我會說使用load().get()是更多的是與你的意圖和要求,而比表現。

負載()


​​是爲一個文件,容易/簡單的加載或它的一部分。
這將加載完整的文檔,然後使用innerHTML解析HTML只返回部分你感興趣的內容。

如果你只需要加載一些內容到一個div然後$(element).load(url, selector)的快速方法是要走的路。我會假設load()就是爲此而優化的。

獲取()


不同於load().get()允許dataType更大的靈活性的設定如JSONP跨域請求。

它還實現promise接口,給它一個Deferred Object的所有功能。

從文檔:

無極接口也允許jQuery的Ajax的方法,包括 $獲得(),把多個.done(),.fail(),和。總是()回調 ,甚至在 請求可能已經完成後分配這些回調。如果請求已完成,則立即觸發 回調。

摘要


在一個非常基本的水平,應該是沒有價值,而一個簡單的.load(url, selector).get(url, callback)之間的性能差異。使用兩者應該沒問題。

我會認爲,這裏沒有對錯之分。使用任何適合您需要的東西。

問自己問題類似:

你需要跨域(JSONP)?
您需要連鎖.fail().done()等?
您是否需要load()沒有的任何功能get()
...

如果您使用load()get()取決於您的要求。在這種情況下性能是次要的。

+0

但是整個文檔都必須下載......可以說在一個案例中。只需要一個選擇器 –

+0

你是什麼意思「不讓你傳遞數據對象」?你是否說'.load()'不能執行'POST'? –

+0

@ToniMichelCaubet:他們都讓你傳遞數據。我在發帖之前忘了從我的模板中刪除這些內容。爲此道歉。我想編輯我的帖子,突出顯示'load()'和'get()'之間的更多區別,以便更清楚地說明主要關注點應該放在「哪種方法滿足我的需求」上,並且只考慮次要性能。例如,如果您需要進行跨域調用或需要使用延遲對象等,則沒有必要使用「load()」快速調用。希望這是有道理的。沒有對錯之分。你使用任何適合你需要的東西。 – Nope