У меня есть функция Ajax, которая может публиковать JSON-код в моем CGI-скрипте Python. Но скрипт cgi не умеет читать json.

Реализация Ajax: —

$.ajax({ url: "add.py", type: "POST", data: JSON.stringify({"things":data}), success: function(response){ alert(response) //var res = JSON.parse(response); } }); 

Когда я вижу заголовки в add.py, я вижу json.

 {"things":[{"name":"jnj","qty":23}]} 

Но когда мой скрипт Python CGI не может прочитать этот JSON.

Я получаю приведенную ниже ошибку (взято из файла журнала apache).

 Original exception was: Traceback (most recent call last): File "/var/www/things/add.py", line 27, in {amp}lt;module{amp}gt; myjson = json.load(sys.stdin) File "/usr/lib/python3.6/json/__init__.py", line 299, in load parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw) File "/usr/lib/python3.6/json/__init__.py", line 354, in loads return _default_decoder.decode(s) File "/usr/lib/python3.6/json/decoder.py", line 339, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) [Fri Jul 12 01:53:24.965064 2019] [http:error] [pid 444:tid 139764057495296] [client 172.17.0.1:47902] AH02429: Response header name '{amp}lt;!--' contains invalid characters, aborting request, referer: http://localhost:8008/things/add.html 

который в основном заявляет, что объектом является None.

Ниже приведен мой код на Python, можете ли вы сказать мне, что в нем не так? Я использовал оба модуля json.loads и json.load для загрузки json, но не повезло.

 #!/usr/bin/python3 import cgi import cgitb import json import sys import os cgitb.enable() form = cgi.FieldStorage() myjson = json.load(sys.stdin) print("Content-type: application/jsonnn") print('{amp}lt;html{amp}gt;') print('{amp}lt;head{amp}gt;') print("{amp}lt;p{amp}gt;hello") print("{amp}lt;p{amp}gt;",json.dumps(myjson),"{amp}lt;/p{amp}gt;") print(' {amp}lt;/head{amp}gt;') print('{amp}lt;/html{amp}gt;')