公式ページでも「$.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で送る場合)。
1 2 3 4 5 6 7 8 9 10 11 12 |
var url = "url"; var obj = {key:"value"}; var jqxhr = $.post(url, obj); jqxhr.done(function(data){ console.log(data); }); jqxhr.fail(function(){ console.log("error"); }); jqxhr.always(function(){ console.log("always"); }); |
1 2 3 |
$.ajaxSetup({ timeout: 2000 }); |
jqXHRオブジェクトを使う
jqXHRオブジェクトの説明は、前出の$.ajax()のページの後半に書かれています。
$.post()はjqXHRオブジェクトを返しますので、done()・fail()・always()が使えます。
コールバックをスタックする場合は、postの中のsuccessではなく、jqXHR.done()を使うので、はじめからdone()を使えば形が変わらなくて良いと思います。
jsonpを使いたいときは$.ajax()
jsonpということはつまりクロスドメインしたいわけなので、それは「ajaxを使いたい」というよりは、「jsonpを使いたい」というまた別の要求として考えたらいいと思います。
それに、それは外部APIを叩くのでしょうから、jQuery初学者の域を出ているのではないかと思います。一旦、$.post()や$.get()を理解してからでいいと思います。