jQuery初学者は$.ajax()ではなく$.post()を使おう

151005_1641

jQuery 1.8.3を使うことを想定しています。

公式ページでも「$.ajaxなんか使わなくても、$.get()とか.load()のような使いやすい関数があるよ」といっています。

The $.ajax() function underlies all Ajax requests sent by jQuery. It is often unnecessary to directly call this function, as several higher-level alternatives like $.get() and .load() are available and are easier to use. If less common options are required, though, $.ajax() can be used more flexibly.

ちなみに「$.ajax() | jQuery 1.9 日本語リファレンス | js STUDIO」での邦訳はこちら。

$.ajax()はjQueryによる全てのAjaxリクエスト処理の基盤となる関数です。 多くのケースで、この関数を直接呼び出す必要は無く、 $.get()や.load()のような、 代わりとなる高階層の扱い易い関数が用意されています。 あまり一般的ではないオプションが必要となるケースで、柔軟に対応出来る$.ajax()を使用します。

まずは結論

以下のコードが初学者のひな形としては良いと思うのです(postで送る場合)。

追記:2015/10/06
タイムアウトを設定したい場合は$.ajaxSetupを利用

jqXHRオブジェクトを使う

jqXHRオブジェクトの説明は、前出の$.ajax()のページの後半に書かれています。

$.post()はjqXHRオブジェクトを返しますので、done()・fail()・always()が使えます。
コールバックをスタックする場合は、postの中のsuccessではなく、jqXHR.done()を使うので、はじめからdone()を使えば形が変わらなくて良いと思います。

jsonpを使いたいときは$.ajax()

jsonpということはつまりクロスドメインしたいわけなので、それは「ajaxを使いたい」というよりは、「jsonpを使いたい」というまた別の要求として考えたらいいと思います。

それに、それは外部APIを叩くのでしょうから、jQuery初学者の域を出ているのではないかと思います。一旦、$.post()や$.get()を理解してからでいいと思います。

  • このエントリーをはてなブックマークに追加

水蕗をフォローする