Mercurial > hg > fapweb
diff msitegen.inc.php @ 1069:5f92fa5e683a
Refactor how the "AJAX" stuff works.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 24 Jan 2017 17:25:48 +0200 |
parents | 0603012e99b7 |
children | 76e11ae923a7 |
line wrap: on
line diff
--- a/msitegen.inc.php Tue Jan 24 16:44:30 2017 +0200 +++ b/msitegen.inc.php Tue Jan 24 17:25:48 2017 +0200 @@ -959,6 +959,72 @@ } +function stCommonAJAX($backend, $failover) +{ +?> +function jsSendPOSTRequest(params, success, failure) +{ +<?php + if (($csrfID = stGetSessionItem("csrfID", FALSE)) !== FALSE) + echo " params += \"&csrfID=".$csrfID."\";\n"; + else + echo "// No CSRF?\n"; +?> + var req = jsCreateXMLRequest(); + 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) + { + switch (req.status) + { + case 404: + window.location = "<? echo $failover ?>"; + break; + + case 902: + jsStatusMsg(req.statusText); + jsMessageBox(req.responseText); + break; + + case 903: + { + var nitem = document.getElementById("messageBox"); + if (nitem) + { + nitem.innerHTML = "<div class='messageBoxInner'>"+ req.responseText + + "<div class='messageBoxControls'>"+ + "</div></div>"; + nitem.style.display = "block"; + } + } + break; + + case 200: + if (success) + success(req.responseText); + jsStatusMsg(req.statusText); + break; + + default: + if (failure) + failure(req.status, req.statusText, req.responseText); + else + jsStatusMsg("["+req.status+" - "+req.statusText+"] "+ req.responseText); + break; + } + } + } + req.send(params); +} + +<?php +} + // // CLI related helper functions //