web-dev-qa-db-ja.com

$ .getのjqueryは非同期ですか?

私は自分のウェブサイトで非同期呼び出しを使うべきかどうか疑問に思っていました。これを明示的に指定する必要があるので、使用する必要があります

$.ajax

しかし、最初は$.getを使用してみましたが、サーバーは多くの情報を返さなければなりませんでしたが、私のブラウザーはスタックせず、問題なくナビゲートできました。

私はそれについて少しオンラインで検索しましたが、2つの違いについてはまだ100%確実ではありません。

$.getが非同期の場合、$.ajaxの意味は何ですか?そうでない場合は、$.getでナビゲーションの問題がなかったことが再度わかります。$.ajaxを使用する意味は何ですか。

前もって感謝します

21
ksm001

はい、 $.get は非同期です。ドキュメントから:

これはAjax関数の短縮形であり、以下と同等です。

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

...そしてasyncオプションがないため、asyncはデフォルトでtrueになります。 (asyncは、jQueryの将来のバージョンでは完全に廃止されることに注意してください。alwaysはtrueになります。)

$.getが非同期の場合、$.ajaxの意味は何ですか?

$.ajaxを使用すると、さらに多くのオプションを制御できます。 $.getは単なるショートカットです。

32
T.J. Crowder

$.get は、以下の省略形です。

$.ajax({
  url: url,
  data: data,
  success: success,
  dataType: dataType
});
3
João Silva

jQuerydocumentation で述べたように、$.getは、より低レベルの$.ajaxの便利なラッパーです。

0
Connor Doyle

$ .ajaxとGETメソッド、これはpromiseオブジェクトでどうですか?

_function showResults(name) { 
        var deferred = $.Deferred, requests = [];

        requests.Push($.ajax({url:"/path/to/uri/?name=" + name, type: "GET", async: false}).done(function(d) { 
         //alert or process the results as you wish 
        }));
        $.when.apply(undefined, requests).then(function(d) { console.log(d); /*var d is a promised late return */ deferred.resolve(); }); 
        return deferred.promise();

    }
_

彼は返されたpromiseオブジェクトを$.when(showResults('benjamin')).done(function() { });とともに使用して、(グラフ/グラフの設定などの)投稿の変更を行うこともできます。完全に再利用可能です。この関数を$ .deferredリクエストのループに入れることもできます。

_function updateResults() { 
             var deferred = $.Deferred, requests = [];
             requests.Push($.ajax(url:"/path/to/names/?nameArr=" + jsonArrOfNames, type: "GET", async: false}).done(function(res) {  requests.Push(showResults(res[0]));}) );
             $.when.apply($, requests).then(function(d) { console.log(d); /*var d is a promised late return */  deferred.resolve(); }); 
             return deferred.promise();
            }
_
0
Cosmo Arun