2010-10-06 179 views
142

$.ajax()$.get()$.load()之間的區別是什麼?

哪個更好用,在什麼條件下使用?

+0

[$(「#id」).load和$ .ajax?之間的差異可能重複](http://stackoverflow.com/questions/2076642/difference-between-id-load-and-ajax) – Athafoud 2016-03-04 18:54:14

回答

202

$.ajax()是最可配置的一個,您可以通過HTTP頭等進行細粒度控制。您也可以使用此方法直接訪問XHR對象。還提供了更細粒度的錯誤處理。因此可能會更復雜,往往不必要,但有時非常有用。你必須用回調自己處理返回的數據。

$.get()只是$.ajax()的簡寫,但會將一些配置摘要消除,爲您隱藏的內容設置合理的默認值。將數據返回給回調。它只允許GET-請求,因此伴隨着$.post()功能類似的抽象,只爲POST

​​類似於$.get()但增加了功能,它允許您定義在文檔中返回的數據將被插入。因此,只有當調用只會導致HTML時才真正可用。它被稱爲與其他全局調用略有不同,因爲它是綁定到特定jQuery包裝的DOM元素的方法。因此,一個會做:$('#divWantingContent').load(...)

應當注意的是,所有$.get()$.post(),​​都是爲了$.ajax()只是包裝,因爲它的內部調用。

的jQuery的Ajax的文檔中的更多細節:http://api.jquery.com/category/ajax/

+9

是否有任何性能差異? – 2015-09-19 12:57:02

+0

@UzairAli不,它從字面上把你傳遞給它的變量用來執行jQuery.ajax() – lisburnite 2016-12-14 12:58:57

+0

好的,.load()只是純HTML,而.get()對於更多的事情是有用的。 – 2017-07-31 20:46:56

6

非常基本的,但

  • $.load():加載一張的HTML到容器DOM中。
  • $.get():如果你想使一個GET通話,並與廣泛的響應發揮使用此功能。
  • $.post():如果你想使一個POST電話,不希望加載某些容器DOM的響應使用此功能。
  • $.ajax():如果您需要的時候XHR不能做點什麼使用它,或者你需要指定阿賈克斯選項(例如緩存:真)的飛行。
26

方法提供抽象的不同層。

  • $.ajax()爲您提供了Ajax請求完全控制。如果其他方法不滿足您的需求,您應該使用它。

  • $.get()執行一個Ajax GET請求。返回的數據(可以是任何數據)將傳遞給您的回調處理程序。

  • $(selector).load()將執行Ajax GET請求,並將設置所選返回數據(應該是文本或HTML)的內容。

這取決於你應該使用哪種方法。如果你想做簡單的事情,沒有必要打擾$.ajax()

E.g.如果返回的數據是JSON,需要進一步處理,則不會使用$.load()。在這裏你可以使用$.ajax()$.get()

9

http://api.jquery.com/jQuery.ajax/

jQuery.ajax()

說明:執行一個異步HTTP(Ajax的)請求。

完整的monty,讓你做任何類型的Ajax請求。


http://api.jquery.com/jQuery.get/

jQuery.get()

描述:從使用HTTP GET請求中的服務器負載數據。

只允許您發出HTTP GET請求,需要少一點配置。


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

​​

描述:從服務器加載數據,並把返回的HTML到匹配元素。

專門用於獲取數據並將其注入元素。

3

重要提示:jQuery的。負載()方法可以做到不僅GET而且POST請求,如果數據參數被提供(參見:http://api.jquery.com/load/

數據類型:PlainObject或字符串的滑動對象或字符串通過請求發送到服務器。

請求方法POST如果數據作爲 對象提供,則使用此方法;否則,假設爲GET

Example: pass arrays of data to the server (POST request) 
$("#objectID").load("test.php", { "choices[]": [ "Jon", "Susan" ] }); 
3

大家都說得對。功能.load,.get.post是使用功能.ajax的不同方式。個人而言,我發現.ajax原始函數非常令人困惑,並且更喜歡根據需要使用加載,獲取或發佈。

POST具有以下結構:

$.post(target, post_data, function(response) { }); 

GET有以下幾點:

$.get(target, post_data, function(response) { }); 

LOAD有以下幾點:

$(*selector*).load(target, post_data, function(response) { }); 

正如你所看到的,有小的差異在他們之間,因爲它的情況臨時t決定使用哪一個。需要將信息發送到內部文件?使用.post(這將是大多數情況下)。需要以這種方式發送信息,以便您可以提供指向特定時刻的鏈接?使用.get。它們都允許回調,您可以在其中處理文件的響應。

一個重要的注意事項是.load以兩種不同的方式行事。如果你只提供目標文件的url,它將作爲作爲get(和我說的行爲,因爲我使用默認的.load行爲測試了在被調用的PHP中檢查$_POST,它檢測到$_POST,而不是$_GET;也許它會更準確地說,它充當.post而沒有任何爭論);然而,正如http://api.jquery.com/load/所說,一旦你爲函數提供了一個參數數組,它就會將這些信息發佈到文件中。無論是什麼情況,.load函數都會直接將信息插入到DOM元素中,這在很多情況下都非常清晰且非常直接;但如果你想在響應中做更多的事情,仍然會提供一個回調。此外,.load允許您從文件中提取某個代碼塊,從而使您可以將目錄(例如,保存在html文件中)以及直接將其片段(條目)檢索到DOM元素中。

0

大家都很好地解釋了這個話題。還有一點我想添加about.load()方法。

根據Load document如果您在數據url中添加了後綴選擇器,那麼它將不會在加載內容時執行腳本。

Working Plunker

  $(document).ready(function(){ 
       $("#secondPage").load("mySecondHtmlPage.html #content"); 
      }) 

在另一方面,在網址中刪除選擇後,在新的內容腳本運行。嘗試this example

在URL中的index.html文件

  $(document).ready(function(){ 
       $("#secondPage").load("mySecondHtmlPage.html"); 
      }) 

刪除#內容後有在討論其他方法沒有提供這樣的內置功能。

-1

兩者都用於發送一些數據並使用該數據接收一些響應。

GET:獲取存儲在服務器中的信息。 (即搜索,推特,人物信息)。如果你想發送信息,然後使用process.php?name=subroto獲取請求發送請求,所以它基本上通過url發送信息。網址無法處理超過2036個字符。所以對於博客文章你能記得它不可能嗎?

POST:發佈與GET完全相同的東西。用戶註冊,用戶登錄,大數據發送,博客文章。 如果您需要發送安全信息,然後使用發佈或大數據,因爲它不通過網址。

AJAX$.get()$.post()包含是$.ajax()子集功能。它有更多的配置。

$.get()方法,這是一種簡寫爲$.ajax()。當使用$.get()時,不是傳入一個對象,而是傳入參數。至少需要前兩個參數,它們是要檢索的文件的URL(例如,test.txt)以及成功回調。