Mercurial > hg > fapweb
diff ajax.js @ 105:a85f258f6beb
Move some things around and modularize the code.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Mon, 21 Oct 2013 16:26:42 +0300 |
parents | |
children | b5981168ed85 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ajax.js Mon Oct 21 16:26:42 2013 +0300 @@ -0,0 +1,152 @@ +function statusMsg(msg) +{ + document.getElementById("nstatus").innerHTML = msg; +} + + +function strtrim(str) +{ + if (!str || str == null) + return ""; + return str.replace(/^\s+|\s+$/g,'') +} + + +function strencode(str) +{ + return encodeURIComponent(str); +} + + +function createXMLRequest() +{ + var req; + if (window.XMLHttpRequest) + { + // Modern browsers + req = new XMLHttpRequest(); + } + else + { + // Old IE versions + req = new ActiveXObject("Microsoft.XMLHTTP"); + } + return req; +} + + +function sendPOSTRequest(params, success, failure) +{ + var req = createXMLRequest(); + req.open("POST", "admajax.php", true); + req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); + req.setRequestHeader("Content-length", params.length); + req.setRequestHeader("Connection", "close"); + + req.onreadystatechange = function() + { + if (req.readyState == 4) + { + if (req.status == 404) + { + window.location = "admlogout.php"; + } + else + if (req.status == 200) + { + if (success) + { + success(req.responseText); + } + statusMsg(req.statusText); + } + else + { + if (failure) + { + failure(req.status, req.statusText, req.responseText); + } + else + { + statusMsg("["+req.status+" - "+req.statusText+"] "+ req.responseText); + } + } + } + } + req.send(params); +} + + +function makePostArgs(fields, fprefix, fsuffix) +{ + var res = []; + for (var id in fields) + { + var elem = document.getElementById(fprefix + id + fsuffix); + if (!elem) + { + alert("No such DOM element '"+ fprefix + id + fsuffix +"'."); + return ""; + } + + switch (fields[id]) + { + case 0: + case 1: + case 4: + { + var str = strtrim(elem.value); + if ((fields[id] == 1 || fields[id] == 4) && str == "") + { + alert("One or more of the required fields are empty."); + return ""; + } + if (fields[id] == 4) + res.push(id+"="+parseInt(elem.value)); + else + res.push(id+"="+strencode(str)); + } + break; + + case 2: + res.push(id+"="+parseInt(elem.value)); + break; + + case 3: + res.push(id+"="+(elem.checked ? "1" : "0")); + break; + + } + } + return res.join("&"); +} + + +function refreshItems(id,name,msgname) +{ + var msuccess = function(txt) + { + var nitem = document.getElementById(id); + nitem.innerHTML = txt; + } + + sendPOSTRequest("action=get&type="+name, msuccess); +} + + +function deleteItem(id,prefix,type,func,dsc) +{ + var msuccess = function(txt) + { + var item = document.getElementById(prefix+id); + item.style.display = "none"; + setTimeout(func, 50); + } + + if (confirm("Are you sure you want to delete "+dsc+" #"+id+"?")) + { + sendPOSTRequest("action=delete&type="+type+"&id="+id, msuccess); + } +} + +