#javascript #php #html
#javascript #php #HTML
Вопрос:
Я пытаюсь передать значение параметра в select из моей HTML-формы в переменную PHP через Javascript
<script type="text/javascript">
function changeDir(ID){
var dir = document.getElementById(ID).value;
//For debuging purposes i've used an alert to show the value of dir on screen
//alert (dir);
//At this point of the function I want to assign the value of "dir" to the variable $folder
}
</script>
есть my .php с html
<SELECT name="course" ID="course" onchange='changeDir("course")' >
<OPTION value="artes>'">artes</OPTION>
<OPTION value="ingles">inglés</OPTION>
</SELECT>
<?php $folder= ...?>
Я использую это с библиотекой загрузки php, все они работают с одним и тем же файлом.
Если кто-нибудь может объяснить мне, как присвоить значение параметра переменной php, это будет здорово.
Спасибо и с уважением.
Комментарии:
1. Вы не можете присвоить значение веб-серверу, когда это значение получено после того, как пользователь что-то делает в браузере. В этот момент страница покинула сервер и теперь находится в браузере и больше не может ничего делать с сервером вообще. Ваши варианты — ajax, сокеты или перезагрузка страницы, все они делают новый запрос на ваш сервер, чтобы фактически отправить данные обратно из браузера на сервер.
2. Вы не можете с php. Вы можете с помощью nodejs: P
Ответ №1:
Вы можете выбрать 2 разных способа. Первый — это AJAX, второй — перенаправить страницу и ПОЛУЧИТЬ значение <select>
элемента.
HTML:
<SELECT name="course" ID="course" onchange='changeDir("course")' >
<OPTION value="artes>'">artes</OPTION>
<OPTION value="ingles">inglés</OPTION>
</SELECT>
JAVA:
<script type="text/javascript">
function changeDir(ID){
var dir = $("course").val();
$.post("php_file.php",
{
posted_dir: dir
},
function(data){
$("id_of_result_elemnt").html(data);
});
}
</script
PHP:
<?php
$folder=$_POST['posted_dir'];
echo "This text will be display in the element with id_of_result_elemnt ID";
?>
Другой метод — перенаправление
HTML PHP:
<SELECT name="course" ID="course" onchange='changeDir("course")' >
<OPTION value="artes>'">artes</OPTION>
<OPTION value="ingles">inglés</OPTION>
</SELECT>
<?php if (iset($_GET['folder']))
{$_GET['folder']=$folder;}...?>
JAVA:
<script type="text/javascript">
function changeDir(ID){
var dir = document.getElementById(ID).value;
window.location = "http://example.com/myphp?folder=" dir;
}
</script>
Ответ №2:
Дело в том, что вы не можете. Они оба находятся в разных частях вашей страницы. Хотя вы можете записать их в один и тот же файл, весь PHP-код обрабатывается на стороне сервера, и Javascript не может ничего видеть со стороны клиента.
Что вы могли бы сделать, так это передать его как AJAX-запрос, чтобы вернуть некоторую информацию для показа пользователю, или <select>
обновить страницу, когда пользователь изменяет параметр, отправив форму, чтобы вы не потеряли «состояние» своей формы, а затем проверить в своем php-блокеесли выбран какой-либо параметр.