2017-01-27 2 views
0

Я пытаюсь получить простой локальный сервер, идущий с python 3.6.BaseHTTPRequestHandler doPOST метод не обновляет html?

Я запускаю HTTPServer и передаю BaseHTTPRequestHandler. Метод do_GET() работает нормально. Он обслуживает файл javascript, который выполняет запрос POST.

Метод do_POST() запускается как «В столбце». Однако я не вижу вывод, записанный в self.wfile.write() в браузере.

Я что-то упустил?

from http.server import HTTPServer, BaseHTTPRequestHandler 
import json 

HOST, PORT = '', 8888 
print("Serving HTTP on port %s." % PORT) 


class Handler(BaseHTTPRequestHandler): 
    def do_POST(self): 
     """ 
     Respond to POST request. 
     """ 

     print("In post") 

     self.send_response(200) # OK 
     self.send_header('Content-type', 'text') 
     self.end_headers() 

     cont = b"post" 
     self.wfile.write(cont) 

    def do_GET(self): 
     """Respond to a GET request.""" 
     self.send_response(200) 

     if self.path == "/": 
      self.send_header("Content-type", "text/html") 
      self.end_headers() 
      path = "index.html" 
     else: 
      self.send_header("Content-type", "application/javascript") 
      self.end_headers() 
      path = self.path[1:] 
     f = open(path, "rb") 
     cont = f.read() 
     self.wfile.write(cont) 
     f.close() 

http = HTTPServer((HOST, PORT), Handler) 
http.serve_forever() 

ответ

1

Если запрос POST выполняется Javascript-файлом, то, предположительно, вы выполняете запрос Ajax. Тот же JS-скрипт должен действительно что-то делать с ответом; вся точка Ajax заключается в том, что она не обновляет страницу автоматически.

+0

Спасибо! Ты был прав. Я вызвал сообщение через $ .post ("/", данные) и не имел функции обратного вызова. – ritchie46

Смежные вопросы