@Smeilz1
За любое развитие

Как считать из JSON значения словаря при помощи Javascript?

У меня есть Python сервер, который генерирует JSON файл и отправляет на http-сервер.
import time
from http.server import BaseHTTPRequestHandler, HTTPServer

HOST_NAME = 'localhost'
PORT_NUMBER = 9000


class MyHandler(BaseHTTPRequestHandler):
    def do_HEAD(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()

    def do_GET(self):
        paths = {
            '/foo': {'status': 200},
            '/bar': {'status': 302},
            '/baz': {'status': 404},
            '/qux': {'status': 500}
        }

        if self.path in paths:
            self.respond(paths[self.path])
        else:
            self.respond({'status': 200})

    def handle_http(self, status_code, path):
        self.send_response(status_code)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        content = '''
{
   "firstName": "Ivan",
   "lastName": "Ivanov",
   "address": {
       "streetAddress": "addr",
       "city": "city",
       "postalCode": "101101"
   },
   "phoneNumbers": [
       "812 123-1234",
       "916 123-4567"
   ],
   "Path": ""
}        ''' #.format(path)
        return bytes(content, 'UTF-8')

    def respond(self, opts):
        response = self.handle_http(opts['status'], self.path)
        self.wfile.write(response)

if __name__ == '__main__':
    server_class = HTTPServer
    httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
    print(time.asctime(), 'Server Starts - %s:%s' % (HOST_NAME, PORT_NUMBER))
    try:
        httpd.serve_forever()
    except KeyboardInterrupt:
        pass
    httpd.server_close()
    print(time.asctime(), 'Server Stops - %s:%s' % (HOST_NAME, PORT_NUMBER))


С помощью этого Javascript Кода я пытаюсь получить статус JSON, потом прочитать значения словаря, и дальше в идеале отправить на сервер команду, что можно обновить JSON и что чтение завершено.
В итоге я даже не могу получить статус JSON. Почему и что делать?
<body>
<script>

fetch('http://127.0.0.1:9000')  
  .then(  

    function(response) {  

      alert( response.status )

      if (response.status !== 200) {  

        console.log('Looks like there was a problem. Status Code: ' +  response.status); 
        return;  

      }

      // Examine the text in the response  
      response.json().then(function(data) {
    alert( data )  
        console.log(data);  
      });  
    }  


  )  
  .catch(function(err) {  
    console.log('Fetch Error :-S', err);  
  });


</script>

</body>

</html>
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Lebed71
Node.js Developer
Нужно указать тип контента - application/json, вместо text/html
Также всегда можно проверить запрос через, например, curl - выполнив команду в консоли curl 127.0.0.1:9000, возможно проблема в серверном коде.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы