-1

我试图给 JS 一个 php 变量。该脚本必须将 gps 坐标提供给一个隐藏表单,该表单以 php 变量命名,并且在按下单击按钮后必须显示该信息。如果我在 JS 脚本中写入例如“latitude3”,它确实可以工作,但使用 php var 它不会。

请帮助我!:) 谢谢!

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
    <script>
var x=document.getElementById("log");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition);
    }
  else{x.innerHTML="GPS szolgáltatás nem müködik ezen a böngészőn, kérlek értesítsd a rendszergazdát!";}
  }
function showPosition(position)
  {
     var latitude = position.coords.latitude;
     var longitude = position.coords.longitude;
     document.getElementById(<?php echo $longitudee;?>).value = longitude; 
     document.getElementById(<?php echo $latitudee;?>).value = latitude;
  }
</script>
    <form action="" method="post">
    <input type="submit" name="ido" value="Click" /></td>
    <input type="hidden" name= "longitude" id="longitude3">
    <input type= "hidden" name ="latitude" id="latitude3">
    </form>

<?php
    if(isset($_POST["ido"])) {
    $g=3;
    $longitudee="longitude$g";
    $latitudee="latitude$g";
    echo "<script>getLocation();</script>";
        $latitude=$_POST["latitude"];
        $longitude=$_POST["longitude"];
        print_r($_POST);
        }

?>
</html>
4

3 回答 3

0
<?php
    if(isset($_POST["ido"])) {
    $g=3;
    $longitudee="longitude$g";
    $latitudee="latitude$g";
    echo "<script>getLocation();</script>";
        $latitude=$_POST["latitude"];
        $longitude=$_POST["longitude"];
        print_r($_POST);
        }

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
    <script>
var x=document.getElementById("log");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition);
    }
  else{x.innerHTML="GPS szolgáltatás nem müködik ezen a böngészőn, kérlek értesítsd a rendszergazdát!";}
  }
function showPosition(position)
  {
     var latitude = position.coords.latitude;
     var longitude = position.coords.longitude;
     document.getElementById("<?php echo $longitudee;?>").value = longitude; 
     document.getElementById("<?php echo $latitudee;?>").value = latitude;
  }
</script>
    <form action="" method="post">
    <input type="submit" name="ido" value="Click" /></td>
    <input type="hidden" name= "longitude" id="longitude3">
    <input type= "hidden" name ="latitude" id="latitude3">
    </form>


</html>

将您的 PHP 移动到顶部并添加双引号到getElementById

于 2013-10-25T11:43:55.280 回答
0

直到代码进一步向下,变量才被声明。您可以像这样重新排列代码,它应该具有预期的效果。

您还应该在 getElementById 参数周围添加引号。

<?php
if(isset($_POST["ido"])) {
$g=3;
$longitudee="longitude$g";
$latitudee="latitude$g";
}

?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
    <script>
var x=document.getElementById("log");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition);
    }
  else{x.innerHTML="GPS szolgáltatás nem müködik ezen a böngészőn, kérlek értesítsd a rendszergazdát!";}
  }
function showPosition(position)
  {
     var latitude = position.coords.latitude;
     var longitude = position.coords.longitude;
     document.getElementById("<?php echo $longitudee;?>").value = longitude; 
     document.getElementById("<?php echo $latitudee;?>").value = latitude;
  }
</script>
    <form action="" method="post">
    <input type="submit" name="ido" value="Click" /></td>
    <input type="hidden" name= "longitude" id="longitude3">
    <input type= "hidden" name ="latitude" id="latitude3">
    </form>
<?php 
    if(isset($_POST["ido"])){
    echo "<script>getLocation();</script>";
    $latitude=$_POST["latitude"];
    $longitude=$_POST["longitude"];
    print_r($_POST);
    }
?>
</html>
于 2013-10-25T11:46:45.427 回答
0

对不起,我还不能发表评论,所以我把它贴在这里作为答案:

  1. 如果我没看错,你想获得“导航器”的地理位置并在 PHP 的某个地方使用它吗?

    由于“getLocation()”javascript 仅在您发布表单后调用,因此您必须发布两次表单才能填充 $latitude 和 $longitude 变量。

  2. 如果您只想在用户单击“单击”按钮后显示用户当前位置,那么仅使用 javascript 的解决方案就足够了。

由于问题是“我如何将 PHP 变量放入 JS”,我假设第一个(尽管您可能是指“PHP 变量的值”)

为了使您的输出保持不变,只需(正如其他人已经提到的)确保定义了变量。

<?php
    $g=3;
    $longitudee="longitude$g";
    $latitudee="latitude$g";
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
    <script>
var x=document.getElementById("log");
function getLocation()
  {
  if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(showPosition);
    }
  else{x.innerHTML="GPS szolgáltatás nem müködik ezen a böngészőn, kérlek értesítsd a rendszergazdát!";}
  }
function showPosition(position)
  {
     var latitude = position.coords.latitude;
     var longitude = position.coords.longitude;
     document.getElementById("<?php echo $longitudee;?>").value = longitude; 
     document.getElementById("<?php echo $latitudee;?>").value = latitude;
  }
</script>
    <form action="" method="post">
    <input type="submit" name="ido" value="Click" /></td>
    <input type="hidden" name= "longitude" id="longitude3">
    <input type= "hidden" name ="latitude" id="latitude3">
    </form>

<?php
    if(isset($_POST["ido"])) {
    echo "<script>getLocation();</script>";
        $latitude=$_POST["latitude"];
        $longitude=$_POST["longitude"];
        print_r($_POST);
        }

?>
</html>
于 2013-10-25T12:05:13.300 回答