Php JavaScript中的导出变量
可能重复: 我有一个JS代码返回我的地理位置纬度、经度,我想在PHP代码中重用这些信息。我的网页有.php扩展名,我设置了全局变量,但它不起作用。 我该怎么做Php JavaScript中的导出变量,php,javascript,variables,Php,Javascript,Variables,可能重复: 我有一个JS代码返回我的地理位置纬度、经度,我想在PHP代码中重用这些信息。我的网页有.php扩展名,我设置了全局变量,但它不起作用。 我该怎么做 <script type="text/javascript"> function getCoordPosition(){ if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(function(
<script type="text/javascript">
function getCoordPosition(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position){
latitude = position.coords.latitude;
longitude = position.coords.longitude;
});
}
}
</script>
<?php
echo 'Latitude is $latitude';
?>
你不能把两者结合起来;Javascript在浏览器中执行,PHP在页面到达浏览器之前在服务器上执行。如果您想将Javascript结果传递给服务器,您应该使用表单提交,或者使用AJAX进行异步请求。您不能将两者结合起来;Javascript在浏览器中执行,PHP在页面到达浏览器之前在服务器上执行。如果要将Javascript结果传递给服务器,则应使用表单提交,或使用AJAX进行异步请求。服务器首先处理PHP代码,然后将其发送给查看器。然后执行JavaScript代码,因此PHP无法知道JavaScript在做什么,因为它是在JavaScript之前处理的。您可以使用AJAX将JavaScript信息传递给PHP脚本,然后从中获取一些信息,但这实际上取决于您希望如何处理这些信息。您的PHP代码首先由服务器处理,然后发送给查看器。然后执行JavaScript代码,因此PHP无法知道JavaScript在做什么,因为它是在JavaScript之前处理的。您可以使用AJAX将JavaScript信息传递给PHP脚本,然后从中获取一些信息,但这实际上取决于您希望如何处理所有这些信息。其中一个方法来自$\u get method
var test1 = "myvalue";
var link = "thispage.php";
window.location = link+"?test1="+test1;
然后从testpage.php读取该值
另一种方法是$.get,或$.post请求到php页面
$.post("mypage.php", {
myvar : "myvalue",
"myanothervar" : "myanothervalue"
}, function(data) {
//data contains the output from the script
});
其中一种方法来自$\u GET方法
var test1 = "myvalue";
var link = "thispage.php";
window.location = link+"?test1="+test1;
然后从testpage.php读取该值
另一种方法是$.get,或$.post请求到php页面
$.post("mypage.php", {
myvar : "myvalue",
"myanothervar" : "myanothervalue"
}, function(data) {
//data contains the output from the script
});
我认为问题在于,您将客户端代码javascript与服务器端代码php混合在一起。服务器上的php无法在运行时从客户端访问信息,因为客户端运行时还不存在。客户端必须将其提交回服务器以供使用 执行php代码并将响应发送到客户端。然后从页面的顶部到底部执行客户端页面。此时,服务器不知道客户机上发生了什么。您可以加载客户机页面,然后使用jQuery将服务器端调用AJAX返回给php以传递信息 我对jQuery有些生疏 $.get'myurl/sendgeolocation',{lat:latitude,long:longitude},函数数据{}
然后,您会希望服务器在functiondata回调中执行它需要执行的任何操作,以根据需要更新屏幕或执行任何操作。我认为问题在于您将客户端代码javascript与服务器端代码php混合在一起。服务器上的php无法在运行时从客户端访问信息,因为客户端运行时还不存在。客户端必须将其提交回服务器以供使用 执行php代码并将响应发送到客户端。然后从页面的顶部到底部执行客户端页面。此时,服务器不知道客户机上发生了什么。您可以加载客户机页面,然后使用jQuery将服务器端调用AJAX返回给php以传递信息 我对jQuery有些生疏 $.get'myurl/sendgeolocation',{lat:latitude,long:longitude},函数数据{} 然后,您希望服务器在functiondata回调中执行它需要执行的任何操作,以根据需要更新屏幕或执行任何操作。这正是您所期望的答案 //index.php
<html>
<head>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function getCoordPosition()
{
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position){
latitude = position.coords.latitude;
longitude = position.coords.longitude;
obj ={};
obj.latitude = position.coords.latitude;
obj.longitude= position.coords.longitude;
//latlngvalue = $.get('index.php',obj,"html");
$.ajax({
url:'fetch.php',
data:obj,
dataType:'html',
success:function(obj){
latlng = obj.split('-');
$('#latlng').html("Latitude : "+latlng[0]+"| Longitude :"+latlng[1]);
}
});
});
}
}
</script>
</head>
<body>
<div id="latlng"></div>
<button onclick="getCoordPosition()" >Get Geocode</button>
</body>
</html>
//fetch.php
<?php
if(isset($_GET['latitude']) && isset($_GET['longitude'])):
echo $_GET['latitude'].'-'.$_GET['longitude'];
endif;
?>
这正是你所期望的答案
//index.php
<html>
<head>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
function getCoordPosition()
{
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(function(position){
latitude = position.coords.latitude;
longitude = position.coords.longitude;
obj ={};
obj.latitude = position.coords.latitude;
obj.longitude= position.coords.longitude;
//latlngvalue = $.get('index.php',obj,"html");
$.ajax({
url:'fetch.php',
data:obj,
dataType:'html',
success:function(obj){
latlng = obj.split('-');
$('#latlng').html("Latitude : "+latlng[0]+"| Longitude :"+latlng[1]);
}
});
});
}
}
</script>
</head>
<body>
<div id="latlng"></div>
<button onclick="getCoordPosition()" >Get Geocode</button>
</body>
</html>
//fetch.php
<?php
if(isset($_GET['latitude']) && isset($_GET['longitude'])):
echo $_GET['latitude'].'-'.$_GET['longitude'];
endif;
?>
可能的副本。另请参见此问题的唯一解决方案是使用AJAX调用-这是JS与PHP通信的唯一方式。@BurningtheCodeigniter:不,还有很多其他解决方案。通信通常是双向的,所以从PHP向JS发送数据就像使用PHP生成JS代码一样简单。在另一个方向上,您可以使用其他解决方案将数据从JS发送到PHP,例如使用修改的GET参数重新加载窗口,添加指向PHP脚本的图像/帧/脚本等。说AJAX调用-这是JS与PHP通信的唯一方式是完全不正确的。可能的重复。另请参见此问题的唯一解决方案是使用AJAX调用-这是JS与PHP通信的唯一方式。@BurningtheCodeigniter:不,还有很多其他解决方案。通信通常是双向的,所以从PHP向JS发送数据就像使用PHP生成JS代码一样简单。在另一个方向上,您可以使用其他解决方案将数据从JS发送到PHP,例如使用修改的GET参数重新加载窗口,添加image/fr
ame/script指向PHP脚本等。说AJAX调用-这是JS与PHP通信的唯一方式是完全不正确的。我想用用户名和其他东西将这些数据发送到我的服务器,并将它们存储在数据库中。我将尝试一个AJAX调用来实现这一点。我想用用户名和其他东西将这些数据发送到我的服务器,并将它们存储在数据库中。我将尝试一个AJAX调用来实现这一点。Tx澄清JS和PHP的特殊性。你能只发布相关代码吗?@Starx是的,你是正确的,我会在下一篇文章中这样做。你能只发布相关代码吗?@Starx是的,你是正确的,我会在下一篇文章中这样做