Не удается прочитать данные JSON, отправленные из Ajax в Python CGI - PullRequest
1 голос
/ 12 июля 2019

У меня есть функция 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 <module>
    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 '<!--' 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/json\n\n")
print('<html>')
print('<head>')
print("<p>hello")
print("<p>",json.dumps(myjson),"</p>")
print(' </head>')
print('</html>')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...