2013-10-25 2 views
-1

im пытается передать переменную php в JS. Сценарий должен указывать координаты gps на скрытую форму, названную в честь переменной php, и после нажатия кнопки нажатия она должна будет отобразить информацию. Если я пишу, например. «latitude3» для скрипта JS он работает, но с php var это не будет.Невозможно получить переменную php в JS

Пожалуйста, помогите мне! :) Спасибо!

<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> 
+2

Похоже, вы используете переменные php перед их настройкой? – Blazemonger

+2

Возможность загрузить картинку девушки. Невозможно понять, что вы не можете использовать переменные, прежде чем объявлять их. Идите фигуру. –

ответ

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

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> 
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> 
+0

да, мне нужен первый вариант, без двойного щелчка. Мне нужно сохранить это в базе данных mysql, и двойное нажатие не может быть опцией – user2897858

+0

Тогда эхо «»; должен всегда срабатывать, а не только при размещении формы. Это означает, что вам нужно удалить «эхо» и просто добавить его непосредственно под форму –

Смежные вопросы