Mercurial > hg > fapweb
view ajax.js @ 120:2c594958050e
Make test vote keys "testN" where N >= 1
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 22 Oct 2013 14:22:26 +0300 |
parents | 87d3ce535834 |
children | 986c25c2e2bc |
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 for creating AJAX POST request arguments list based // on fields and giving them specified types. Also basic check // for validity can be performed (e.g. field empty or not) // 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); } // Clearly mark the element when asking confirmation var item = document.getElementById(prefix+id); var tmp = item.style.background; item.style.background = "red"; // Ask confirmation for deletion if (confirm("Are you sure you want to delete "+dsc+" #"+id+"?")) { // Okay, delete sendPOSTRequest("action=delete&type="+type+"&id="+id, msuccess); } // Restore background item.style.background = tmp; }