Mercurial > hg > fapweb
view majax.php @ 210:cafc05949a19
Work on error handling.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 17 Nov 2013 20:35:52 +0200 |
parents | 8985d2bdb29b |
children | 65d68ac6c5cc |
line wrap: on
line source
<? // // FAPWeb Simple Demoparty System // Common AJAX Javascript code module // (C) Copyright 2012-2013 Tecnic Software productions (TNSP) // function stCommonAJAX($backend, $failover, $script = FALSE) { if ($script) echo "<script type=\"text/javascript\">\n"; ?> 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", "<? echo $backend ?>", 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 = "<? echo $failover ?>"; } else if (req.status == 902) { statusMsg(req.statusText); alert(req.responseText); } 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("&"); } <? if ($script) echo "</script>\n"; } ?>