我这样在节点js中获取数据
var no_ktp = req.body.cust_noktp
request({
uri : 'https://evodms-dev.client.com/evoDMM/api/api_customer_all.php?cust_noktp='+no_ktp,
auth: {
'bearer': '71D55F995678929'
},
rejectUnauthorized: false,//add when working with https sites
requestCert: false,//add when working with https sites
agent: false,//add when working with https sites
}, function(error, rows) {
if (error) {
console.log(error);
} else {
console.log(rows);
}
});
日志是这样的
但是我想获取状态:false,当我尝试console.log(rows.body.status)
时,日志显示未定义。怎么写才能得到状态?
谢谢您的帮助...
答案 0 :(得分:2)
只有当您的身体是物体时,您才能使用rows.body.status
来访问状态!
但是,在日志中,您的对象实际上是一个字符串,因此,您需要首先使用JSON.parse(rows.body)
才能将对象字符串转换为实际的javascript对象。然后,您将可以使用常规语法访问任何属性
let body = JSON.parse(rows.body);
console.log(body.status) // 'False'
更新
因此,我刚刚阅读了请求nodejs软件包https://www.npmjs.com/package/request的自述文件 您会看到请求的回调实际上包含3个参数:
(error, response, body)
响应参数是所谓的“行”,因此可以代替使用我的方法(JSON.parse),而可以使用提供给回调函数的第三个参数,而无需解析,可以使用它直接:)
答案 1 :(得分:0)
您的body
响应似乎不是JSON格式,而是字符串。您必须通过
var no_ktp = req.body.cust_noktp
request({
uri : 'https://evodms-dev.client.com/evoDMM/api/api_customer_all.php?cust_noktp='+no_ktp,
auth: {
'bearer': '71D55F995678929'
},
rejectUnauthorized: false,//add when working with https sites
requestCert: false,//add when working with https sites
agent: false,//add when working with https sites
}, function(error, rows) {
if (error) {
console.log(error);
} else {
const body = JSON.parse(rows.body); // parse string to JSON
console.log(body.status);
}
});