【发布时间】:2019-05-20 19:42:45
【问题描述】:
我有用 Python 制作的 REST API,我想通过 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();
知道我该怎么做才能让它起作用吗?
【问题讨论】:
-
"下面的 python 代码"如果我们不知道确切地是什么
request_data_jsn是没有意义的。此外,如果您发送 json,“application/json”是正确的内容类型标头 - 但您在代码示例中发送的不是 json(json 是文本格式),它是一个 javascript 对象。 -
关于 python 代码,抱歉,这就是我从他们那里得到的全部信息。关于对象,它实际上是有效的 JSON 字符串,它包含所有的引号。我也用jsonlint.com 验证它以确保它的格式正确
-
关于您发送的内容不是正确的 json 的评论来自我在您实际编辑问题之前看到的内容 - 编辑后的版本似乎是正确的。 wrt/ python 方面,您必须向“后端人员”询问适当的完整示例,否则无法提供帮助。
标签: javascript python json api