以正确的格式将 php 变量传递给 html
passing php variables to html with the right format
我对编程很陌生,因此有一些 "doubts"。我没有排序的一个是关于如何以某种格式从 php 到 html 传递数据。关于沟通。
我想做的是使用这部分程序在 Google 地图中插入 gps 位置。
有效位:我可以像从 php 到 html 的单个字符串一样导出数据
如果我输入数据形式html
,我可以根据需要绘制地图
我的理解是 php 数组在格式上与 html 变量所需的输入不兼容。这是代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Google Maps Multiple Markers</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.1.min.js"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 400px;"></div>
<script type="text/javascript">
// Define your locations
**var locations = [
['<h4>One</h4>', -30.2, 100.6],
['<h4>Two</h4>', -31.2, 100.7],
['<h4>Three</h4>', -32.2, 100.8]
];**
var iconURLPrefix = 'http://maps.google.com/mapfiles/ms/icons/';
var icons = [
iconURLPrefix + 'red-dot.png',
iconURLPrefix + 'green-dot.png',
iconURLPrefix + 'blue-dot.png',
iconURLPrefix + 'orange-dot.png'
]
var icons_length = icons.length;
var shadow = {
anchor: new google.maps.Point(15,33),
url: iconURLPrefix + 'msmarker.shadow.png'
};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(-37.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
streetViewControl: false,
panControl: false,
zoomControlOptions: {
position: google.maps.ControlPosition.LEFT_BOTTOM
}
});
var infowindow = new google.maps.InfoWindow({
maxWidth: 160
});
var marker;
var markers = new Array();
var iconCounter = 0;
// Add the markers and infowindows to the map
for (var i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
icon : icons[iconCounter],
shadow: shadow
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
iconCounter++;
if(iconCounter >= icons_length){
iconCounter = 0;
}
}
function AutoCenter() {
// Create a new viewpoint bound
var bounds = new google.maps.LatLngBounds();
// Go through each...
$.each(markers, function (index, marker) {
bounds.extend(marker.position);
});
// Fit these bounds to the map
map.fitBounds(bounds);
}
AutoCenter();
</script>
</body>
</html>
理想情况下,我想用我已经在 php 中构建的变量替换 var 位置(到目前为止是在同一页面中构建的),然后将其传递给 var 位置。
我尝试通过以下方式传递数组:
<?php
$locations = array();
for ($x = 0; $x <= 3; $x++) {
$locations[] = ['One',$x,$x+1,$x+2];
}
$loc = $_POST[$locations];
//$loc = $_POST['<h4>Bondi Beach</h4>, -33.890542, 151.274856'];
print_r ($locations);
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var cars = <?php print_r ($loc); ?>;
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
但运气不佳。无论如何可以支持吗?
非常感谢
-------------------------------------------- --------------
更新!!!感谢你们所有人,我设法确定了如何传递变量
<?php
$arr = array("Bondi Beach",",-33.890542",",151.274856");
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var locations = <?php echo json_encode($arr) ?>;
document.getElementById("demo").innerHTML = locations[1];
</script>
</body>
</html>
现在下一步是尝试传递数组...尝试了以下但仍然无效...
<?php
$arr = array();
for ($x = 0; $x <= 3; $x++) {
$arr[] = ["One",$x,$x*2];
};
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var arr = new Array(3);
for (i = 0; i <= 3; $i++) {
arr[i] = <?php echo json_encode($arr[i]) ?>;
}
document.getElementById("demo").innerHTML = arr[1];
</script>
</body>
</html>
也许是一个太幼稚的尝试...
已排序
感谢大家的支持。我希望很快见到你(作为我网站的会员!)
非常感谢:-)
伊曼纽尔
JSON 是 JavaScript 对象表示法,您可以使用 php 函数 json_encode http://php.net/manual/en/function.json-encode.php
JSON:一种旨在在语言和其他来源之间传输数据的语言。 JavaScript 和 PHP 都可以将对象编码和解码为 JSON,使它们可以互换。这是传输数据的现代且最常见的方式。 XML 仍在使用,但产生的开销比 JSON 多。
<script>
var cars = <?php json.encode($loc); ?>;
document.getElementById("demo").innerHTML = cars.join(", ");
</script>
上面的代码会将 PHP 数组对象 转换为 JSON 和 json_encode
. JavaScript 将 JSON string
解析为 javascript 数组对象 。函数 join
是用来让你看到结果的。
要实际检索值,请使用:
cars[0]; //<h4>Bondi Beach</h4>
cars[1]; //-33.890542
cars[2]; //151.274856
我对编程很陌生,因此有一些 "doubts"。我没有排序的一个是关于如何以某种格式从 php 到 html 传递数据。关于沟通。
我想做的是使用这部分程序在 Google 地图中插入 gps 位置。
有效位:我可以像从 php 到 html 的单个字符串一样导出数据 如果我输入数据形式html
,我可以根据需要绘制地图我的理解是 php 数组在格式上与 html 变量所需的输入不兼容。这是代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Google Maps Multiple Markers</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.1.min.js"></script>
</head>
<body>
<div id="map" style="width: 500px; height: 400px;"></div>
<script type="text/javascript">
// Define your locations
**var locations = [
['<h4>One</h4>', -30.2, 100.6],
['<h4>Two</h4>', -31.2, 100.7],
['<h4>Three</h4>', -32.2, 100.8]
];**
var iconURLPrefix = 'http://maps.google.com/mapfiles/ms/icons/';
var icons = [
iconURLPrefix + 'red-dot.png',
iconURLPrefix + 'green-dot.png',
iconURLPrefix + 'blue-dot.png',
iconURLPrefix + 'orange-dot.png'
]
var icons_length = icons.length;
var shadow = {
anchor: new google.maps.Point(15,33),
url: iconURLPrefix + 'msmarker.shadow.png'
};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(-37.92, 151.25),
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
streetViewControl: false,
panControl: false,
zoomControlOptions: {
position: google.maps.ControlPosition.LEFT_BOTTOM
}
});
var infowindow = new google.maps.InfoWindow({
maxWidth: 160
});
var marker;
var markers = new Array();
var iconCounter = 0;
// Add the markers and infowindows to the map
for (var i = 0; i < locations.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
icon : icons[iconCounter],
shadow: shadow
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
iconCounter++;
if(iconCounter >= icons_length){
iconCounter = 0;
}
}
function AutoCenter() {
// Create a new viewpoint bound
var bounds = new google.maps.LatLngBounds();
// Go through each...
$.each(markers, function (index, marker) {
bounds.extend(marker.position);
});
// Fit these bounds to the map
map.fitBounds(bounds);
}
AutoCenter();
</script>
</body>
</html>
理想情况下,我想用我已经在 php 中构建的变量替换 var 位置(到目前为止是在同一页面中构建的),然后将其传递给 var 位置。
我尝试通过以下方式传递数组:
<?php
$locations = array();
for ($x = 0; $x <= 3; $x++) {
$locations[] = ['One',$x,$x+1,$x+2];
}
$loc = $_POST[$locations];
//$loc = $_POST['<h4>Bondi Beach</h4>, -33.890542, 151.274856'];
print_r ($locations);
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var cars = <?php print_r ($loc); ?>;
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
但运气不佳。无论如何可以支持吗? 非常感谢
-------------------------------------------- --------------
更新!!!感谢你们所有人,我设法确定了如何传递变量
<?php
$arr = array("Bondi Beach",",-33.890542",",151.274856");
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var locations = <?php echo json_encode($arr) ?>;
document.getElementById("demo").innerHTML = locations[1];
</script>
</body>
</html>
现在下一步是尝试传递数组...尝试了以下但仍然无效...
<?php
$arr = array();
for ($x = 0; $x <= 3; $x++) {
$arr[] = ["One",$x,$x*2];
};
?>
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var arr = new Array(3);
for (i = 0; i <= 3; $i++) {
arr[i] = <?php echo json_encode($arr[i]) ?>;
}
document.getElementById("demo").innerHTML = arr[1];
</script>
</body>
</html>
也许是一个太幼稚的尝试...
已排序
感谢大家的支持。我希望很快见到你(作为我网站的会员!)
非常感谢:-)
伊曼纽尔
JSON 是 JavaScript 对象表示法,您可以使用 php 函数 json_encode http://php.net/manual/en/function.json-encode.php
JSON:一种旨在在语言和其他来源之间传输数据的语言。 JavaScript 和 PHP 都可以将对象编码和解码为 JSON,使它们可以互换。这是传输数据的现代且最常见的方式。 XML 仍在使用,但产生的开销比 JSON 多。
<script>
var cars = <?php json.encode($loc); ?>;
document.getElementById("demo").innerHTML = cars.join(", ");
</script>
上面的代码会将 PHP 数组对象 转换为 JSON 和 json_encode
. JavaScript 将 JSON string
解析为 javascript 数组对象 。函数 join
是用来让你看到结果的。
要实际检索值,请使用:
cars[0]; //<h4>Bondi Beach</h4>
cars[1]; //-33.890542
cars[2]; //151.274856