AJAX PHP функция onchange select box

У меня проблема, о которой я очень смущен. У меня есть поле выбора с динамически сгенерированным с помощью запроса mysqli:

$result = mysqli_query($db, "SELECT * FROM `users` WHERE `user_id` > 0"); echo '<html><form name="contacts" method="post"><select name="contacts"><option value="Contact list" onchange="func()">Contact List</option>'; while($row = $result->fetch_assoc()){ echo '<option value = '.$row['user_name'].'>'.$row['user_name'] . '</option>'; } echo '</select></form>'; 

Я совершенно не знаком с AJAX, но мне нужно использовать jquery и ajax для передачи переменной this.value переменной php для использования в более позднем запросе.

Вот мой сценарий (большинство из которых было найдено в Интернете):

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> $("#contacts").change(function() { //get the selected value var selectedValue = this.value; //make the ajax call $.ajax({ url: 'function.php', type: 'POST', data: {option : selectedValue}, success: function() { console.log("Data sent!"); } }); }); </script> 

Теперь, когда я нажимаю значение в поле выбора, ничего не происходит. Нет предупреждений или ошибок и т. Д.

Пожалуйста, помогите мне.

ps function.php существует. Это просто простое эхо на данный момент (для целей тестирования)

ОБНОВЛЕНИЕ: ЗДЕСЬ FUNCION.PHP:

 <?php /*$val = $_REQUEST['selectedValue']; echo $val;*/ function function(){ $val = $_REQUEST['selectedValue']; echo $val; } ?> 

ОБНОВЛЕНИЕ: Спасибо всем за вашу помощь. Я теперь получил его, чтобы работать в том, что секция сети проверки chrome показывает запрошенную функцию.php, но я до сих пор не получаю эхо (я использовал внешние .js-файлы, чтобы заставить его работать). Моя функция запроса J также успешна (функция успеха эхо в консоли)

В поле выбора нет идентификатора, и вы смотрите событие change $("#contacts") .

Изменить:

 echo '<html><form name="contacts" method="post"><select name="contacts"><option value="Contact list" onchange="func()">Contact List</option>'; 

чтобы:

 echo '<html><form name="contacts" method="post"><select name="contacts" id="contacts"><option value="Contact list">Contact List</option>'; ^^^^^^^^^^^^^ here 

Вам также нужен только один обработчик событий, поэтому я удалил встроенный, который, похоже, ничего не делает.

Изменить: если выбор создается с помощью ajax, вам необходимо передать событие:

 $("body").on('change', '#contacts', function() { ^^^^ for example 

Редактировать 2: Ваша переменная называется $_REQUEST['option'] а не $_REQUEST['selectedValue'] . Вы также не называете свою функцию -badly named-function, поэтому вы не получите какой-либо вывод из php, кроме как из ошибки, такой как Parse error: syntax error, unexpected 'function' ...

Вызовите функцию обмена в теге select, как показано ниже.

 echo '<form name="contacts" method="post"><select name="contacts" onchange="func(this.value)"><option value="Contact list">Contact List</option></form>'; 

Javascript src должен быть в заголовке html-страницы.

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> 

Добавьте выше в заголовке html. Обновить javacript, как показано ниже

Поскольку функция onchange вызывается в самом теге select, следующего достаточно

 <script> function func(selectedValue) { //make the ajax call $.ajax({ url: 'function.php', type: 'POST', data: {option : selectedValue}, success: function() { console.log("Data sent!"); } }); } </script> 

Обновленный php: Если вы хотите получить значение из функции, вы должны его вызвать. В противном случае, просто, вы можете сделать, как показано ниже

  <?php if($_REQUEST['option']) { $val=$_REQUEST['option']; echo $val; } ?> 

В .php-файле,

 $val = $_REQUEST['selectedValue']; echo $val; 

установите атрибут id в вашем php-коде для тега select и

пожалуйста, не используйте одно и то же значение для атрибута name в форме и выберите теги!

просто измените свою функцию на «body». и дайте своим элементам идентификатор «контактов»,

 $("body").on('change', '#contacts', function() { //get the selected value var selectedValue = $(this).val(); //make the ajax call $.ajax({ url: 'function.php', type: 'POST', data: {option : selectedValue}, success: function() { console.log("Data sent!"); } }); });