Mercurial > hg > fapweb
view 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 source
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); } }