見出し画像

plainなJavaScriptで書くAjax

cssでアニメーションを作るようになると、jQueryの出番がないサイトも多くなってきます。

個人的にはjQueryなしではセレクタ指定の仕方よりも、plain(素の)JavaScriptでAjaxどう書くんだ?となるので、まとめておきたい。



まずはjQueryでどう書いているか。


JavaScript(jQueryあり)

var ajaxUrl = '';
$.ajax({
 cache: 'false',
 dataType: 'text',
 url: ajaxUrl,
 success: function(data) {
   alert('success');
 },
 error: function() {
   alert('error');
 },
 complete: function() {
   alert('complete');
 }
});



そしてjQueryなしで書く場合は?


JavaScript(jQueryなし)

var ajaxData = new XMLHttpRequest();
/* url */
var ajaxUrl = '';
var ajaxParameter = '';
ajaxData.open('GET', ajaxUrl + ajaxParameter, true);
/* dataType */
ajaxData.responseType = 'document';
/* cache */
ajaxData.setRequestHeader('Pragma', 'no-cache');
ajaxData.setRequestHeader('Cache-Control', 'no-cache');
ajaxData.setRequestHeader('If-Modified-Since', 'Thu, 01 Jun 1970 00:00:00 GMT');

ajaxData.send(null);
ajaxData.onreadystatechange = function() {
 if (ajaxData.readyState === 4 && ajaxData.status == 200) {
   alert('success');
 } else {
   alert('error');
 }
}
ajaxData.onload = function() {
 alert('complete');
}

jQueryと比較してみると分かりやすいかなと思います。対応する箇所にアラートとコメントいれてます。



AjaxがPOSTの時は?


こうなります。openとsendを入れ替えてください。

JavaScript

ajaxData.open('POST', ajaxUrl, true);
ajaxData.send(ajaxParameter);



responseTypeの種類


例にもいれてるdocument以外はそのままですね。指定忘れてるとtextになる。

・document:htmlまたはXML形式
・json:json形式
・text:text形式(指定なしdefault)

ajaxもキャッシュとタイプ指定すれば読み込んでくれるので難しくないですね。