无法在HTTP POST响应中访问JSON属性



我正在调用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']);
}

最新更新