如何创建值数组并从 PHP 调用 JavaScript 函数
Posted
技术标签:
【中文标题】如何创建值数组并从 PHP 调用 JavaScript 函数【英文标题】:How to create an array of values and call a JavaScript function from PHP 【发布时间】:2018-08-21 23:37:26 【问题描述】:我需要创建一个从 Parse Server 查询中获取的值数组,并调用一个 JS 函数,该函数在自定义 Google 地图上显示标记和 infoWindows。
这不是关于服务器端的问题,而是关于如何创建数组并将其传递给 php 中的 JS 函数的问题。
这是我执行查询的地方:
try
$query = new ParseQuery("Monsters");
$mArray = $query->find();
for ($i = 0; $i < count($mArray); $i++)
// Get Parse Object
$mObj = $mArray[$i];
// Get name
$mName = $mObj->get('name');
// Get location
$mLocation = $mObj->get('location');
$mLat = $mLocation->getLatitude();
$mLng = $mLocation->getLongitude();
// Get points
$mPoints = $mObj->get('points');
// Here i need to make an array of $mName + $mPoints + $mLat + $mLng and call the addMonstersOnMap() JS function...
But my array should be like:
[name, points, 40.7143850, -72.0059756],
[name, points, 30.7143850, -44.0059756],
etc..
// error in query
catch (ParseException $e) echo $e->getMessage();
这是我的 JS 函数(我不知道如何将 monsters 数组传递给它并调用它):
function addMonstersOnMap(monsters) // monsters IS THE ARRAY I NEED TO GET FROM MY PHP QUERY!
var centerCoords = new google.maps.LatLng(66.93828964, -53.64523124);
var mapOptions =
zoom: 2,
scrollwheel: true,
center: centerCoords,
mapTypeId: google.maps.MapTypeId.ROADMAP
var map = new google.maps.Map(document.getElementById('mapCanvas'), mapOptions);
var marker, i;
var infowindow = new google.maps.InfoWindow();
// Add marker for each Monster
for (i = 0; i < monsters.length; i++)
marker = new google.maps.Marker(
position: new google.maps.LatLng(monsters[i][1], monsters[i][2]),
map: map,
icon: monsters[i][3]
);
// click function to marker, pops up infowindow
google.maps.event.addListener(marker, 'click', (function(marker, i)
return function()
infowindow.setContent(monsters[i][0]);
infowindow.open(map, marker);
)(marker, i));
// end FOR loop
google.maps.event.addDomListener(window, 'load', initialize);
【问题讨论】:
What is the difference between client-side and server-side programming?的可能重复 How to pass variables and data from PHP to javascript?的可能重复 都不是,是关于如何制作一个数组并传递给特定的JS函数 然后将问题实现为您真正想做的事情。 PHP 代码中间的“调用 addMonstersOnMap() JS 函数”说,你想从 PHP 中调用一个 JS 函数,这是不可能的,为什么会这样,在链接的副本。 是的,您可以将其作为文本包含在内,但您不能执行它。正如您从链接的帖子中所读到的:“[PHP] 的最终最终目标是……[to] 生成 html 字符串”。 PHP 代码中的 JavaScript 只不过是文本,它只是 HTML 字符串的一部分,根本无法执行。 【参考方案1】:你有两个选择。
一、发送到ajax请求页面不充值 您的 php 函数将返回矩阵
$.ajax(
url: "file.php", // your file path where are the php code
success: function(result) // the result is the matrix
//your code function addMonstersOnMap
);
或两次从 php 写入 js 并在页面重新加载时更新值 在页面视图的代码中发送矩阵,然后这样写
<?php
echo '<script> addMonstersOnMap('.$matrix.') ;</script>';
?>
【讨论】:
对不起,我该如何创建这样的数组:['name', 20.354354, -12.566465], ['name', 20.235234, -12.356789], etc...以上是关于如何创建值数组并从 PHP 调用 JavaScript 函数的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery - 如何取消嵌套多个数组,并从一列分配值?