JavaScript中的导出变量

时间:2012-03-02 18:16:28

标签: php javascript variables

  

可能重复:
  Access a JavaScript variable from PHP

我有一个JS代码返回我的地理位置(纬度,经度),我想在PHP代码中重用这些信息。我的网页有.php扩展名,我设置了全局变量,但它不起作用。 我怎么能这样做?

<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';
?>

5 个答案:

答案 0 :(得分:2)

你不能只把两者结合起来; Javascript在浏览器中执行,服务器上的PHP(在页面到达浏览器之前)。如果要将Javascript结果传达给服务器,则应使用表单提交,或使用AJAX进行异步请求。

答案 1 :(得分:1)

其中一种方法来自$ _GET方法

var test1 = "myvalue";
var link = "thispage.php";

window.location = link+"?test1="+test1;

然后从testpage.php

中读取值

另一种方法是对PHP页面的$ .get或$ .post请求。

$.post("mypage.php", {
   myvar : "myvalue",
   "myanothervar" : "myanothervalue"
}, function(data) {
   //data contains the output from the script
});

答案 2 :(得分:1)

我认为问题在于您将客户端代码(javascript)与服务器端代码(php)混合在一起。由于客户端运行时尚不存在,服务器上的php无法在运行时从客户端访问信息。客户必须将其提交回服务器以供使用。

执行php代码并将响应发送到客户端。然后从页面顶部到底部执行客户端页面。此时,服务器不知道客户端上发生了什么。您可以加载客户端页面,然后使用jQuery将服务器端调用(AJAX)返回给php以传递信息。

类似的东西(我在jQuery上有点生疏)

$。get('myurl / sendgeolocation',{lat:lattitude,long:longitude},function(data){});

然后你会希望服务器在函数(数据)回调中做任何需要做的事情来根据需要或其他任何方式更新屏幕。

答案 3 :(得分:0)

您的PHP代码首先由服务器处理,然后发送给查看器。然后执行JavaScript代码,因此PHP无法知道JavaScript在JavaScript之前处理了什么。您可以使用AJAX将JavaScript信息传递给PHP脚本,然后从中获取一些东西,但这实际上取决于您想要对所有这些做些什么。

答案 4 :(得分:0)

这正是您期望的答案

//的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;

?>