Передача «значения» из select в форме в переменную php с проблемами javascript

#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-блокеесли выбран какой-либо параметр.