我有使用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();
有什么办法可以使它起作用吗?
答案 0 :(得分:3)
您必须将dataToSend转换为字符串。示例:使用 JSON.stringify
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);