Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python API,由JavaScript使用,发送JSON数据_Javascript_Python_Json_Api - Fatal编程技术网

Python API,由JavaScript使用,发送JSON数据

Python API,由JavaScript使用,发送JSON数据,javascript,python,json,api,Javascript,Python,Json,Api,我用Python制作了RESTAPI,我想通过JavaScript使用它。API需要从前端以JSON的形式发送一些数据,因此我进行如下调用: var xhttp = new XMLHttpRequest(), dataToSend = '{"key":"value"}'; xhttp.onreadystatechange = function() { // Some logic..... }; xhttp.open("POST", "URL to the API", true

我用Python制作了RESTAPI,我想通过JavaScript使用它。API需要从前端以JSON的形式发送一些数据,因此我进行如下调用:

var xhttp = new XMLHttpRequest(),
    dataToSend = '{"key":"value"}';

xhttp.onreadystatechange = function() {
    // Some logic.....
};

xhttp.open("POST", "URL to the API", true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.send(dataToSend);
从服务器上我得到500,原因如下:

“TypeError:JSON对象必须是str,而不是'dict'”

我试图将MIME类型更改为“text/plain”、“text/html”和其他几种类型,但它只是将响应更改为:

TypeError:JSON对象必须是str,而不是“NoneType”

后端人员表示,API运行良好,并使用以下python代码对其进行了测试

request_result = requests.post('API URL', json=request_data_jsn).json();

你知道我该怎么做才能让它工作吗?

你必须把数据转换成字符串。示例:使用JSON.stringify


很抱歉,我没有把我的问题写对,我确实这样做了(我刚刚编辑了我的问题)我尝试了你的代码:dataToSend='{“key”:“value”}。这就是成功。如果我们不确切知道什么是
request\u data\u jsn
,那么“下面的python代码”就毫无意义了。另外,如果您发送json,“application/json”是正确的内容类型标题,但您在代码示例中发送的不是json(json是文本格式),而是javascript对象。关于python代码,很抱歉,这是我从他们那里得到的全部信息。关于这个对象,它实际上是一个有效的JSON字符串,它有所有的引号和符号。为了确保格式正确,我对它进行了验证。关于你发送的内容不正确的json的评论来自于我在你编辑问题之前看到的内容——编辑后的版本似乎是正确的。请注意,在python方面,您必须向“后端人员”询问一个适当的完整示例,否则无法提供帮助。
var xhttp = new XMLHttpRequest(),
    dataToSend = {"key":"value"}

xhttp.onreadystatechange = function(data) {
    console.log(data);
};

dataToSend = JSON.stringify(dataToSend);
xhttp.open("POST", "URL to the API", true)
xhttp.setRequestHeader("Content-type", "application/json")
xhttp.send(dataToSend);