- Javascript
- XMLHttpRequest
- POST
Ajax.htm
Ajax.js
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <title>Ajax</title>
- <script src="Ajax.js" type="text/javascript"></script>
- <script type="text/javascript">
- var oM = {
- "nA": 0,
- "nB": 0,
- "nResult": 0,
- "toString": function () {
- return this.nA.toString() + "\t" + this.nB.toString();
- },
- Parse: function (oResult) {
- this.nResult = oResult[0];
- },
- Calc: function (fCb, ErCb) {
- var that = this;
- this.CalcRe = function (oResult) {
- that.Parse(oResult);
- fCb();
- };
- var sObject = "Mathematics";
- var sAction = "sum";
- ins.Post(sObject, sAction, this.toString(), this.CalcRe, ErCb);
- }
- };
- var oC = {
- Start: function () {
- $("btnSum").onclick = function () {
- oV.Read();
- oM.Calc(oV.Show);
- };
- }
- };
- var oV = {
- Read: function () {
- oM.nA = parseInt($("txtA").value, 10) || 0;
- oM.nB = parseInt($("txtB").value, 10) || 0;
- },
- Show: function () {
- $("tdSum").innerHTML = oM.nResult.toString();
- }
- };
- window.onload=oC.Start;
- </script>
- </head>
- <body>
- <table>
- <tr><td><label for="txtA">1st Number</label></td><td><input type="number" id="txtA" value="7" /></td></tr>
- <tr><td><label for="txtB">2nd Number</label></td><td><input type="number" id="txtB" value="11" /></td></tr>
- <tr><td><button id="btnSum" style="width:100%;">Sum</button></td><td id="tdSum"></td></tr>
- </table>
- </body>
- </html>
var $ = function (sId) { return document.getElementById(sId); };
if (typeof ins !== "object") var ins={};
ins.sPostUrl = "../aj.ashx";
ins.nPostTimeout = 50000;
ins.Post = function (sObject, sAction, sData, cb, cbError) {
//sData = ins.oUser.toString() + "\n" + sObject + "\n" + sAction + "\n" + sData;
sData = sObject + "\n" + sAction + "\n" + sData;
var oX = new XMLHttpRequest();
oX.onreadystatechange = function () {
switch (oX.readyState) {
case 1:
case 2:
case 3:
break;
case 4:
if (oX.status == 200) {
clearTimeout(oTim);
if (oX.responseText && oX.responseText === "{nError:1}") {
alert("Please Log In!");
//ins.oUser.Login();
return;
}
if (cb) {
var sHeader, nPos, aHeaders =
oX.getAllResponseHeaders().replace("\r", "").split("\n");
var oHeaders = {};
for (var nHeader = aHeaders.length - 1; nHeader >= 0; nHeader--) {
sHeader = aHeaders[nHeader];
nPos = sHeader.indexOf(": "); //split nogood: Date has more ":"
if (nPos >= 0) {
oHeaders[sHeader.substring(0, nPos)] =
sHeader.substring(nPos + 2);
} else {
oHeaders[sHeader] = "";
}
}
var sType = (oHeaders["Content-Type"] ?
oHeaders["Content-Type"].split(";")[0] : "");
var oResult = null;
if ("application/javascript" === sType) {
if ((typeof JSON === "undefined") ||
(typeof JSON.parse === "undefined")) {
oResult = eval("(" + oX.responseText + ")");
} else {
oResult = JSON.parse(oX.responseText);
}
if (typeof oResult[0] === "string" && oResult[0] === "Error") {
if (cbError) cbError(oResult[1]);
} else {
cb(oResult);
}
} else {
cb(oX.responseText);
}
}
} else {
if (cbError) cbError(oX.status, oX.statusText);
}
break;
}
};
oX.open("POST", ins.sPostUrl, true);
oX.setRequestHeader("Content-Type", "text/plain;charset=utf-8");
oX.setRequestHeader("Content-Length", sData.length);
oX.setRequestHeader("Connection", "close");
oX.send(sData);
var oTim = setTimeout(function () {
oX.abort();
alert("Connection Timeout!");
}, ins.nPostTimeout);
};
No comments:
Post a Comment