无法将一个php变量放入JS中

时间:2013-10-25 11:38:48

标签: javascript php html

我试图给JS一个php变量。该脚本必须将gps坐标提供给隐藏的表单,该表单以php变量命名,并且在按下单击按钮后,它必须显示该信息。 如果我写,例如“latitude3”到JS脚本它确实有效,但是使用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>

3 个答案:

答案 0 :(得分:1)

在代码的下游,不会声明变量。您可以像这样重新安排代码,它应该具有预期的效果。

您还应该在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>

答案 1 :(得分: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

添加双引号

答案 2 :(得分:0)

对不起我还不能发表评论所以我在这里发布答案:

  1. 如果我看得正确,你想获得“导航器”的地理位置并在PHP中使用它吗?

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

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

  3. 由于问题是“如何将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>