Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 PHP数组到JSON,具有带回调函数的参数_Javascript_Php_Json_Pannellum - Fatal编程技术网

Javascript PHP数组到JSON,具有带回调函数的参数

Javascript PHP数组到JSON,具有带回调函数的参数,javascript,php,json,pannellum,Javascript,Php,Json,Pannellum,在我的PHP脚本中,我有一个类似于以下内容的数组: $panorama = array( "default" => array( "firstScene" => 2, "author" => 'Felipe' ), "scenes" => array( "circle" => array( "title" => "Title 1", "h

在我的PHP脚本中,我有一个类似于以下内容的数组:

$panorama = array(
    "default" => array(
        "firstScene" => 2,
        "author" => 'Felipe'
    ), 
    "scenes" => array(
        "circle" => array(
            "title" => "Title 1", 
            "hotSpots" => array(
                "pitch" => "-2.1",
                "createTooltipFunc" => "hotspot"
            )
        )
    )
);
此数组将作为json对象传递给Javascript函数,如下所示:

pannellum.viewer('panorama', <?php echo json_encode($panorama); ?>);
var objTour = <?php echo json_encode($panorama); ?>;
            for (var [key, value] of Object.entries(objTour.scenes)) {
                var objdadosScene = value;
                for (var [key, value] of Object.entries(objdadosScene)) {
                    if(key == 'hotSpots'){
                        var objHotspot = objdadosScene.hotSpots;
                        for (var [key, value] of Object.entries(objHotspot)) {
                            var objDadosHotspot = value;
                            for (var [key, value] of Object.entries(objDadosHotspot)) {                             
                                objDadosHotspot['createTooltipFunc'] = hotspot;
                            }
                        }
                    }
                }
            }
pannellum.viewer('panorama',);
参数createTooltipFunc必须接收名为hotspot的回调函数。因此,在最后一个json中,当我将这个PHP数组传递给Javascript函数时,这个参数应该是这样的:“createTooltipFunc”:hotspot,没有双引号。我该怎么做


为了提供更多信息,我正在尝试使用插件pannellum.js创建一个tour,并从mysql数据库获取所需的json的所有信息。

在两者之间保留一个Javascript变量,用于保存对象,并在使用pannellum之前更新属性(假设热点是一个变量)

//创建Javascript对象
var-obj=;
//使用变量更新createTooltipFunc项目
//其中变量名可以从$panorama中提取
obj.scenes.circle.hotSpots.createTooltipFunc=;
pannellum.viewer(“全景”,obj);

根据Pranav的建议,我必须将PHP数组放入一个javascript对象中,并在其中循环以找到正确的节点,然后将旧值替换为新值,如下所示:

pannellum.viewer('panorama', <?php echo json_encode($panorama); ?>);
var objTour = <?php echo json_encode($panorama); ?>;
            for (var [key, value] of Object.entries(objTour.scenes)) {
                var objdadosScene = value;
                for (var [key, value] of Object.entries(objdadosScene)) {
                    if(key == 'hotSpots'){
                        var objHotspot = objdadosScene.hotSpots;
                        for (var [key, value] of Object.entries(objHotspot)) {
                            var objDadosHotspot = value;
                            for (var [key, value] of Object.entries(objDadosHotspot)) {                             
                                objDadosHotspot['createTooltipFunc'] = hotspot;
                            }
                        }
                    }
                }
            }
var objTour=;
for(Object.entries(objTour.scenes)的var[key,value]{
var objdadosScene=值;
for(Object.entries的var[key,value](objdadosScene)){
如果(键==‘热点’){
var objHotspot=objdadosScene.hotSpots;
for(Object.entries(objHotspot))的var[key,value]{
var objDadosHotspot=值;
对于(Object.entries(objDadosHotspot)的(var[key,value]){
objDadosHotspot['createTooltipFunc']=热点;
}
}
}
}
}

我不知道这是否是实现结果的最佳方式,但它正在发挥作用。谢谢!

Uncaught ReferenceError:热点未定义但不起作用。我多次出现createTooltipFunc。它是一个比我给出的示例级别更高的数组。我必须为此参数提供javascript函数,以便自定义我的hotspot@PranavCBalan您可以使用obj.scenes.circle.hotSpots.createToolTipfunce访问它。因此,我必须使用Javascript搜索并替换doble quoutes?@churros:这是一种方法