55 lines
2.7 KiB
C++
55 lines
2.7 KiB
C++
#ifndef ____script_h__
|
|
#define ____script_h__
|
|
|
|
#include "HTTPPage.h"
|
|
|
|
namespace http {
|
|
|
|
class __script : public HTTPPage {
|
|
|
|
int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override {
|
|
|
|
data << "function serverSend(url, type, receiver, formData, callback) {" << std::endl;
|
|
data << " var server = new XMLHttpRequest();" << std::endl;
|
|
data << " server.onload = function() {" << std::endl;
|
|
data << " if(server.readyState == 4 && server.status == 200)" << std::endl;
|
|
data << " callback(server.responseText, receiver);" << std::endl;
|
|
data << " };" << std::endl;
|
|
data << " server.open(type, url, true);" << std::endl;
|
|
data << " server.send(formData);" << std::endl;
|
|
data << "}" << std::endl;
|
|
|
|
data << "function getPage(url, receiver) {" << std::endl;
|
|
data << " serverSend(url, \"GET\", receiver, null, function(data, receiver) {" << std::endl;
|
|
data << " var panel1 = document.getElementById(receiver);" << std::endl;
|
|
data << " panel1.innerHTML = data;" << std::endl;
|
|
data << " });" << std::endl;
|
|
data << "}" << std::endl;
|
|
|
|
data << "function process(url, formName, receiver) {" << std::endl;
|
|
data << " var formElement = document.querySelector(\"form[name='\" + formName + \"']\");" << std::endl;
|
|
data << " var formData = new FormData(formElement);" << std::endl;
|
|
data << " serverSend(url, \"POST\", receiver, formData, function(data, receiver) {" << std::endl;
|
|
data << " var panel1 = document.getElementById(receiver);" << std::endl;
|
|
data << " panel1.innerHTML = data;" << std::endl;
|
|
data << " });" << std::endl;
|
|
data << "}" << std::endl;
|
|
|
|
// data << "var setInnerHTML = function(elm, html) {" << std::endl;
|
|
// data << " lm.innerHTML = html;" << std::endl;
|
|
// data << " Array.from(elm.querySelectorAll("script")).forEach( oldScript => {" << std::endl;
|
|
// data << " const newScript = document.createElement("script");" << std::endl;
|
|
// data << " Array.from(oldScript.attributes)" << std::endl;
|
|
// data << " .forEach( attr => newScript.setAttribute(attr.name, attr.value) );" << std::endl;
|
|
// data << " newScript.appendChild(document.createTextNode(oldScript.innerHTML));" << std::endl;
|
|
// data << " oldScript.parentNode.replaceChild(newScript, oldScript);" << std::endl;
|
|
|
|
httpRequest.response.addHeader("Content-Type", "text/javascript");
|
|
|
|
return true;
|
|
}
|
|
};
|
|
}
|
|
|
|
#endif
|