- Javascript
- XMLHttpRequest
- POST
Ajax.htm
<!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>Ajax.js
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