原生AJAXパッケージのシンプル実現
元の生のjsに帰って、ネット上で見たAJAXのカプセル化、そして改善してきました。
一つのパラメータが空か数字でない場合は、「status」:「0」,「msg」:「パラメータが間違っています。」
正しい時には、{status}、「#1」、「sum」:「/n 1加n 2の和」を返します。
バックエンドのコードは貼り付けません。
フロントエンドの呼び出し:
var ajaxHelper = {
/*1.0 */
makeXHR: function () {
//
var xmlHttp = false;
//
var xmlHttpObj = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "MSXML.XMLHttp"];
// XMLHttpRequest, , ,
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
// , , ,
else if (window.ActiveXObject) {
for (i = 0; i < xmlHttpObj.length; i++) {
xmlHttp = new ActiveXObject(xmlHttpObj[i]);
if (xmlHttp) {
break;
}
}
}
// , , , false
return xmlHttp ? xmlHttp : false;
},
/*2.0 Ajax */
doAjax: function (method, url, data, isAyn, callback, type) {
method = method.toLowerCase();
//2.1
var xhr = this.makeXHR();
//2.2 ( get, url , , )
xhr.open(method, url + (method == "get" ? "?" + data : ""), isAyn);
//2.3 (get/post),
if (method == "get") {
xhr.setRequestHeader("If-Modified-Since", 0);
} else {
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
}
//2.4
xhr.onreadystatechange = function () {
//
if (xhr.readyState == 4) {
//
if (xhr.status == 200) {
if (type.toLowerCase() == "json") {
var ret = {};
try {
if (typeof JSON != "undefined") {
ret = JSON.parse(xhr.responseText);
} else {
//IE8 JSON
ret = new Function("return " + xhr.responseText)();
}
callback(ret);
} catch (e) {
console.log(e.message);
callback(false);
}
} else {
//
callback(xhr.responseText);
}
} else {
console.log("AJAX Status Code:" + xhr.status);
callback(false);
}
}
};
//2.5 ( post, , )
xhr.send(method != "get" ? data : null);
},
/*3.0 Post */
doPost: function (url, data, isAyn, callback, type) {
this.doAjax("post", url, data, isAyn, callback, type);
},
/*4.0 Get */
doGet: function (url, data, isAyn, callback, type) {
this.doAjax("get", url, data, isAyn, callback, type);
}
};
1つの需要を仮定して、バックエンドは、2つの数字n 1、n 2に入ってきて、合計を返します。一つのパラメータが空か数字でない場合は、「status」:「0」,「msg」:「パラメータが間違っています。」
正しい時には、{status}、「#1」、「sum」:「/n 1加n 2の和」を返します。
バックエンドのコードは貼り付けません。
フロントエンドの呼び出し:
document.getElementById("btnSubmit").onclick = function () {
ajaxHelper.doPost(" url", "n1=10&n2=25", true, function (ret) {
if (!ret) { return; }
if (ret.status != 1) {
alert(ret.msg);
return;
}
var n = ret.sum;
var s = ret.status;
}, "json");
};
以上の原生AJAXパッケージの簡単な実現は小編集が皆さんに提供した内容の全部です。参考にしていただければと思います。よろしくお願いします。