我一直在努力解决如何从对 Sony Bravia 电视查询的 JSON 结构化响应中检索数据。 我尝试了几种语法变体来仅获取单个元素的数据,但没有什么乐趣。
响应被发送到 ID 为“log”的文本区域字段。 以下是显示的内容:
{
"result": [
[
{
"target": "speaker",
"volume": 22,
"mute": false,
"maxVolume": 100,
"minVolume": 0
}
]
],
"id": 1
}
javascript函数如下。 在最后一行中,我试图查看单个元素,但什么也没得到。最后一行应该是什么?
var gblJSONresponse = [];
function send(service, method, params) {
var ip = 'xxx.xxx.xxx.xxx';
var psk = 'xxxx';
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var resp = xhr.responseText;
gblJSONresponse = JSON.parse(xhr.response);
log(JSON.stringify(JSON.parse(xhr.response), null, ' '));
};
xhr.open('POST', 'http://' + ip + '/sony/' + service);
if (psk) {
xhr.setRequestHeader('X-Auth-PSK', psk);
}
xhr.send(JSON.stringify({
method: method,
version: '1.0',
id: 1,
params: params ? [params] : [],
}));
window.alert("JSONresponse:\n"+JSONresponse[0].result[0].target);
}
我认为你正在解析响应而不是responseText
检查responseType是否设置为json或text,如果设置为text则查看responseText,否则它将出现在响应中
XMLHttpRequest.response 只读 返回一个 ArrayBuffer、一个 Blob、一个 文档、JavaScript 对象或字符串,具体取决于 XMLHttpRequest.responseType,包含响应实体主体。
XMLHttpRequest.responseText 只读 返回包含以下内容的字符串 对请求的响应为文本,如果请求为 null,则为 null 不成功或尚未发送。