Заполните динамический раскрывающийся список на основе значения, вставленного в текстовое поле
Пожалуйста, помогите, я действительно сойду с ума!
У меня есть форма PHP с некоторыми вопросами, и один из них - "Какие ваши любимые фильмы?" для которого я использовал функцию автозаполнения jQuery, которая отлично работает! Однако возможно, что пользователи забудут название фильма, но помнят актера, сыгравшего в этом фильме. Итак, я хотел бы разрешить пользователю вводить имя актера / актрисы в текстовое поле с автозаполнением (например, "Том Круз") и на основе вставленного имени актера должно быть добавлено динамическое выпадающее меню, которое содержит список фильмов, которые актер (например, Том Круз) играл в них.
Это то, что я пробовал, но не работает ((
<html>
<?php
print_r($_POST);
?>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css"/>
</head>
<body>
<input type="textbox" name= "tag" id="tags">
<select id="movieImdbId" name="movieImdbId[]" multiple="multiple" width="200px" size="10px" style=display:none;>
</select>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" />
<script type="text/javascript">
$(document).ready(function () {
$("#tags").autocomplete({
source: "actorsauto.php", //php file which fetch actors name from DB
minLength: 2,
select: function (event, ui){
var selectedVal = $(this).val(); //this will be your selected value from autocomplete
// Here goes your ajax call.
$.post("actions.php", {q: selectedVal}, function (response){
// response variable above will contain the option tags.
$("#movieImdbId").html(response).show();
});
}
});
});
</script>
</body>
</html>
и это actions.php:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
if(isset($_GET['q']) && !empty($_GET['q'])){
$q = $_GET['q'];
include('Connection.php'); //connection to the DB
$sql = $conn->prepare("SELECT DISTINCT movieImdbId FROM movie_roleNames WHERE castName = :q");
$sql->execute(array(':q' => $q));
$html = "";
while($row = $sql->fetch(PDO::FETCH_OBJ)){
$option = '<option value="' . $row->movieImdbId . '">' . $row->movieImdbId . '</option>';
$html .= $option;
}
echo $html; // <-- this $html will end up receiving inside that `response` variable in the `$.post` ajax call.
exit;
}
?>
Вопрос: почему, когда пользователь вставляет имя актера в текстовое поле, выпадающее меню заполняется, но ПУСТО?
1 ответ
В своем вызове ajax вы отправляете POST
запрос, и вы пытаетесь получить параметры с $_GET
у вас php.
$.post("actions.php", {q: selectedVal}, function (response){
// response variable above will contain the option tags.
$("#movieImdbId").html(response).show();
});
изменить $.post
метод для $.get
,
ИЛИ ЖЕ
if(isset($_GET['q']) && !empty($_GET['q'])){
$q = $_GET['q'];
}
менять $_GET
в $_POST
,