将getJSON与变量

时间:2015-12-07 03:00:47

标签: javascript php jquery

如果问题不明确,我事先道歉,但我会尝试。

我目前拥有此代码,用于从家庭自动化控制器中提取所有设备的状态。

function pull_light_status (lights_array) {
        $.getJSON( "resources/php/getjson.php", function( json ) {
            var vera_obj = json;
            $.each(lights_array,function(myindex, myvalue){
            var id_del_object = myvalue;
            var id_status = vera_obj.devices[id_del_object].states[0].value;
        })
        })     
    }

由于对象的结构,我很难使用该对象,因此我正在考虑使用其他路径。

我可以使用这个名为change_state.php

的php来获取特定设备的状态
<?php
$url = 'http://ip:port/data_request?id=variableget&DeviceNum' . $_POST['device_id'] . "&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status";
$jsondata_send = file_get_contents($url);
//echo $jsondata_send;
?>

我的问题是:
是否有可能将JS替换为允许我请求我指定的设备变量的json响应的东西?

这样的东西?

function pull_light_status (lights_array) {
        $.each(lights_array,function(myindex, myvalue){
            $.getJSON( "resources/php/change_state.php",{ device_id: + myvalue})
                      .done(function(json) {
                var vera_obj = json;
                console.log (vera_obj);
            })
        })
    }

我期望的回报是0或1,这样我就可以使用设备的状态。

1 个答案:

答案 0 :(得分:0)

尝试使用POST,因为您希望php方有function pull_light_status (lights_array) { $.each(lights_array,function(myindex, myvalue){ $.post( "resources/php/change_state.php", { device_id: myvalue }) .done(function( data ) { var vera_obj = json; console.log (vera_obj); }); }) } 个有效负载。

php

json方面,您需要确保发送一个var_dump($jsondata_send);编码的字符串。
因此<?php $url = 'http://ip:port/data_request?id=variableget&DeviceNum' . $_POST['device_id'] . "&serviceId=urn:upnp-org:serviceId:SwitchPower1&Variable=Status"; $jsondata_send = file_get_contents($url); header('Content-Type: application/json'); print $jsondata_send; ?> 将按顺序排列,如果可以的话,将其与标题一起打印出来。

getJSON

如果您想使用$_POST['device_id'],请在php文件中将$_GET['device_id']更改为/** * @Route("/", name="homepage") * * @return \Symfony\Component\HttpFoundation\Response */ public function index() { // ... }