Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JavaScript中的导出变量_Php_Javascript_Variables - Fatal编程技术网

Php JavaScript中的导出变量

Php JavaScript中的导出变量,php,javascript,variables,Php,Javascript,Variables,可能重复: 我有一个JS代码返回我的地理位置纬度、经度,我想在PHP代码中重用这些信息。我的网页有.php扩展名,我设置了全局变量,但它不起作用。 我该怎么做 <script type="text/javascript"> function getCoordPosition(){ if(navigator.geolocation){ navigator.geolocation.getCurrentPosition(function(

可能重复:

我有一个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';
?>

你不能把两者结合起来;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是的,你是正确的,我会在下一篇文章中这样做