Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajaxget命令获取灯光的状态_Javascript_Json_Ajax - Fatal编程技术网

Javascript ajaxget命令获取灯光的状态

Javascript ajaxget命令获取灯光的状态,javascript,json,ajax,Javascript,Json,Ajax,我正在尝试在本地主机上运行一个html应用程序,以控制phillips色调灯光。我正在修改基本代码来实现它。现在我需要做一个函数来了解每个灯泡的状态,以便在HMI上刷新它,但我不能与AJAX代码兼容。 如果我在API中执行GET命令,我会得到这个响应, 我有一个AJAX PUT函数来改变灯泡的状态 app.lightSetState = function(lightId, state) { $.ajax({ type: 'PUT', dataType

我正在尝试在本地主机上运行一个html应用程序,以控制phillips色调灯光。我正在修改基本代码来实现它。现在我需要做一个函数来了解每个灯泡的状态,以便在HMI上刷新它,但我不能与AJAX代码兼容。 如果我在API中执行GET命令,我会得到这个响应,

我有一个AJAX PUT函数来改变灯泡的状态

 app.lightSetState = function(lightId, state)
 {
    $.ajax({
        type: 'PUT',
        dataType: 'json',
        url: 'http://' + app.getHueBridgeIpAddress() +'/api/' +
            app.user + '/lights/' + lightId + '/state',
        data: JSON.stringify(state),
        success: function(data) { },
        error: function(a, err) { }
    });
 };


 //turn device on
 app.lightOn = function()
 {
    app.lightSetState(app.lightId, {"on":true});
 };


 //turn device off
 app.lightOff = function()
 {
    app.lightSetState(app.lightId, {"on":false});
 };
现在我认为解决办法是这样的

 app.lightGetState = function(lightId, state)
 {
    $.ajax({
        type: 'GET',
        dataType: 'json',
        url: 'http://' + app.getHueBridgeIpAddress() +'/api/' +
            app.user + '/lights/' + lightId,
        data: .............  ,
        success: ............ ,
        error: 
    });
 };
有人能帮我吗? 我愿意接受任何关于做这个状态刷新的建议


致以最诚挚的问候:)

您声明通过调用URL获得JSON响应,因此:

function getState(app, lightId)
{
    return $.ajax({
        type: 'GET',
        async: false,
        dataType: 'json',
        url: 'http://' + app.getHueBridgeIpAddress() +'/api/' + app.user + '/lights/' + lightId,
        success: function(data) {
            return data;
        },
        error: function(a, err) {}
    });
};

var jsontext = JSON.parse(getState(app,lightId));
app.lightGetState = jsontext[1].state.on;
实际上,您确实不应该使用
async:false
,因为它已被弃用。您应该删除
return
方法,并在
success:
函数中进行处理

作为解释:
GET示例中显示的数据是JSON,因此需要将其解析为一个我称为jsontext的对象。棘手的一点是键是“1”,但一旦我们有了它(
jsontext[1]
),我们就会得到
状态
键,然后是
键,它将返回
'true'
'false'
,您可以在以后的代码中使用这些字符串

您能澄清您的问题吗?你说你想得到状态,但是你第一段代码的第四行显示状态为'on'Hi@LTPCGO,当我得到灯光时,API会给我我发布的信息。正如我所说的,如果“state:on”是真是假,我想“捕获”,我不知道怎么做。我们的目标是改变灯泡图标,如果灯是打开或关闭,并保持我的应用程序与灯泡同步每次。主要的问题是我不能适应AJAX。提前感谢您的时间。您需要真正熟悉JSON,但我将发布一个答案:)什么代码生成您显示的第一个代码块?最后一段代码什么都不做。。。这是一种解决方案的例子。。。但是如果我使用'http://'+app.getHueBridgeIpAddress()++'/api/'+app.user++'/lights/'+lightId,我会得到你在主帖子链接中看到的内容。。。谢谢你的合作。我的评论太多了,所以我发布了一个答案。谢谢你的回答。我试图在我的代码中使用这个函数:函数getstate(){var estado=app.lightGetState(2);document.getElementById(“textbox8”).value=estado;},而textbox8中的结果是“未定义的”。我错过什么了吗?致以最良好的问候,感谢您的合作。
function getState(app, lightId)
{
    return $.ajax({
        type: 'GET',
        async: false,
        dataType: 'json',
        url: 'http://' + app.getHueBridgeIpAddress() +'/api/' + app.user + '/lights/' + lightId,
        success: function(data) {
            return data;
        },
        error: function(a, err) {}
    });
};

var jsontext = JSON.parse(getState(app,lightId));
app.lightGetState = jsontext[1].state.on;