JavaScript使用的Python API发送JSON数据

时间:2018-12-20 09:47:33

标签: javascript python json api

我有使用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();

有什么办法可以使它起作用吗?

1 个答案:

答案 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);