Я пытаюсь реализовать простое веб-приложение. Пользователь отправляет текст, и он изменяется по некоторым правилам и отображается под формой. Я пытаюсь сделать это, настроив веб-сервер через BaseHTTPServer.BaseHTTPRequestHandler
он держит index.html
, В index.html
, есть функция js, которая анализирует текст, отправленный пользователем в программу php. Это программа php, которая выполняет преобразование и возвращает результаты. Подробный код выглядит следующим образом:
# server.py
class IndexHandler(BaseHTTPServer.BaseHTTPRequestHandler):
def do_GET(self):
fname,ext = os.path.splitext(self.path)
if ext in (".html", ".css", ".js", ".xml"):
with open('index.html') as f:
self.send_response(200)
self.send_header('Content-type', types_map[ext])
self.end_headers()
self.wfile.write(f.read())
return
def main():
port = 8888
server_address = ('', port)
httpd = BaseHTTPServer.HTTPServer(server_address, IndexHandler)
print 'Server starting..'
httpd.serve_forever()
if __name__ == "__main__":
main()
// index.html
<head>
<script>
function get_transform()
{
var source = document.forms.input.source.value;
var theUrl = 'transform.php?source='+source;
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", theUrl, false);
xmlHttp.send();
var response = xmlHttp.responseText;
}
</head>
<body>
<form id='input' onsubmit='transform(); return false;'>
<div class="input-group">
<input type="text" id='source'>
<button type="submit">Transform</button>
</div>
</form>
</body>
//transform.php
$source=$_GET["source"];
echo(transform($source));
Однако сейчас xmlHttp.send();
всегда получаю пустой ответ. Не могли бы вы сказать мне, в чем причина и как мне с этим бороться? Спасибо!
Редактировать:
Кажется, причина в том, что я отфильтровал запрос, содержащий ‘.php’ if ext in (".html", ".css", ".js", ".xml"):
, Но я понятия не имею, как изменить do_GET
функция. Как мне переписать это?
Задача ещё не решена.
Других решений пока нет …