Javascript PHP数组到JSON,具有带回调函数的参数
在我的PHP脚本中,我有一个类似于以下内容的数组: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
$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:这是一种方法