我正在调用HTTP POST请求,响应是JSON数据。
POST请求:
const postXHR = new XMLHttpRequest();
postXHR.open('POST', postOptions);
postXHR.setRequestHeader("Accept", "text/json");
postXHR.setRequestHeader("Content-Type", "text/json");
postXHR.onreadystatechange = function() {
const response = postXHR.response;
if (response.response) {
console.log(postXHR.status);
}
createNewOptionValues(response);
}
postXHR.send('{"optionName":"optionName46", "platformName":"platformName46","dotDigitalId":3,"googleId":4}');
POST Response/JSON Data:
{
"data": {
"rooftopGoogleOptionId": 99,
"googleId": 4,
"dotDigitalId": 3,
"optionName": "optionName46",
"optionValue": null,
"platformName": "platformName46",
"googleAccount": null,
"dotDigitalAccount": null,
"updatedBy": null,
"updatedAt": null,
"createdBy": "root",
},
"status": 201,
"message": "success"
}
createNewOptionValue函数应该记录响应中属性的值。
function createNewOptionValues(obj){
console.log(obj.googleId);
console.log(obj['googleId']);
}
然而,输出是未定义的,当使用console.log(obj)时,响应确实显示。
当您收到响应时,它是在"text"格式(在大多数情况下)你需要将响应传递给JSON。解析作为JSON对象访问它。
在createNewOptionValues中添加1行功能将使它工作。另外,您需要访问obj.data.googleId,而不是访问obj.googleId
function createNewOptionValues(obj){
obj = JSON.parse(obj)
console.log(obj.data.googleId);
console.log(obj.data['googleId']);
}