|
|
|
| Значит суть проблемы такая. Делаю поиск с помощью AJAX, есть поле для вводы текста и выпадающий список, текст который вводится в поле успешно передается в указанный в форме файл, а номер из списка select нет. Вопрос, как его передать? Заранее благодарю!
Вот код html:
<form action="view_search.php" method="post" name="form" onsubmit="return false;">
<input name="search" type="text" id="search">
<select name="rub">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" name="submits" value="Искать!">
</form>
|
ajax код
$(function(){
$("#search").keyup(function(){
var search = $("#search").val();
$.ajax({
type: "POST",
url: "view_search.php",
data: {"search": search},
cache: false,
success: function(response){
$("#resSearch").html(response);
}
});
return false;
});
});
|
| |
|
|
|
|
|
|
|
для: sedoy
(10.12.2014 в 17:19)
| |
<form action="view_search.php" method="post" name="form" onsubmit="return false;">
<input name="search" type="text" id="search">
<select name="rub" id='select'>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" name="submits" value="Искать!">
</form>
|
$(function(){
$("#search").keyup(function(){
var search = $("#search").val();
$.ajax({
type: "POST",
url: "view_search.php",
data: {"search": search, 'select':$('#select').val()},
cache: false,
success: function(response){
$("#resSearch").html(response);
}
});
return false;
});
});
|
| |
|
|
|
|
|
|
|
для: Enter
(10.12.2014 в 17:51)
| | Спасибо, этот способ очень помог, очень благодарен! Но возник еще нюанс, когда я что то ввожу в строку поиска не выбрав определенный пункт списка он не чего не ищет в базе, если я обновлю страницу выберу пункт и введу запрос, он находит, но если я вновь с этим же запросом, но смею пункт выбора, нечего не происходит. Как это дело поправить?
Пример:
1) text:ASUS select:0 - нечего не находит
2) text:ASUS select:1 - нечего не находит
если обновить страницу или убрать слово из текстовой строки:
3) text:ASUS select:1 - находит
4) text:ASUS select:2 - остается запрос с 3 примера и при нажатии на кнопку не чего не происходит | |
|
|
|
|
|
|
|
для: sedoy
(11.12.2014 в 01:01)
| | Нужно видеть весь код, чтобы знать, где ошибка. может, у вас еще где-то есть элемент с айди = селект. | |
|
|
|
|
|
|
|
для: Enter
(11.12.2014 в 10:30)
| | JavaScript:
<script type="text/javascript">
$(function(){
$("#search").keyup(function(){
var search = $("#search").val();
$.ajax({
type: "POST",
url: "view_search.php",
data: {"search": search, 'rub':$('#rub').val()},
cache: false,
success: function(response){
$("#resSearch").html(response);
}
});
return false;
});
});
</script>
|
Форма:
<form action="view_search.php" method="post" name="form" onsubmit="return false;">
<input name="search" type="text" id="search">
<select name="rub" id="rub">
<?php
$sql11 = mysql_query("SELECT * FROM cat");
if(!$sql11)
{
echo "Запрос на выборку не прошел, обратитесь к Администратору!";
exit(mysql_error());
}
if(mysql_num_rows($sql11) > 0 )
{
do
{
printf("
<option value='%s'>%s</option>
",$myrow11['id_cat'],$myrow11['title_cat']);
}
while($myrow11 = mysql_fetch_array($sql11));
}
else
{
echo "В данной категории нет данных!";
}
?>
</select>
<input type="submit" name="submits" value="Искать!">
</form>
|
Файл обработчик view_search.php
<?php
if(isset($_POST['search'])) {$search = $_POST['search'];}
if(isset($_POST['rub'])) {$rub = $_POST['rub'];}
if(empty($search) or strlen($search) < 3)
{
exit("Поле не должно быть пустым или менее 3 символов");
}
$search = trim($search);
$search = stripslashes($search);
$search = htmlspecialchars($search);
?>
<?php
$sql2 = mysql_query("SELECT DISTINCT id,title,money,nalichie,id_brand,title_brand FROM data, brand WHERE data.cat = '$rub' AND `text` LIKE '%$search%'
AND showhide = '1' AND data.brand = brand.id_brand",$db);
if(!$sql2)
{
echo "Запрос на выборку не прошел, обратитесь к Администратору!";
exit(mysql_error());
}
$num = mysql_num_rows($sql2);
if($num > 0)
{
echo "<p>По Вашему запросу найдено <strong style='color:red;'>".$num."</strong> совпадений</p>";
?>
<table class='bordered'>
<thead>
<tr>
<th style='text-align:center;'>Артикул</th>
<th>Наименование</th>
<th>Цена (Руб)</th>
<th>Бренд</th>
<th>Наличие на складе</th>
</tr>
</thead>
<?php
while($myrow2 = mysql_fetch_array($sql2))
{
if($myrow2['nalichie'] == 1)
{
$nalichie = "<p style='color:green;'>На складе</p>";
}
else
{
$nalichie = "<p style='color:red;'>На складе отсутствует</p>";
}
printf("
<tr>
<td style='text-align:center;'>%s</td>
<td><a href='post.php?id=%s'>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
</tr>
",$myrow2['id'],$myrow2['id'],$myrow2['title'],$myrow2['money'],$myrow2['title_brand'],$nalichie);
}
}
else
{
echo "По Вашему запросу ничего не найдено";
}
?>
</table>
|
Весь код | |
|
|
|
|
|
|
|
для: sedoy
(11.12.2014 в 13:35)
| | Обработчик для события селекта где? | |
|
|
|
|
автор: Очередной хакер говорит (18.12.2014 в 06:17) |
|
|
для: sedoy
(11.12.2014 в 13:35)
| | Твой php-код уязвим и редактировать твой сайт может любой желающий, не только ты | |
|
|
|
|
|
|
|
для: sedoy
(10.12.2014 в 17:19)
| | Во-первых, если Ajax, то action="view_search.php" method="post" name="form" onsubmit="return false;" совсем не нужно:
а) url вы явно указываете здесь - url: "view_search.php"
б) метод передачи здесь - type: "POST"
в) name="form" - не видно что используется
г) onsubmit="return false;" - предотвращается передачи формы тут в обработчике
Прежде чем отправлять данные, необходимо проверить действительны ли они. Значение вашего списка по умолчанию равно 1, если это соответствует "политике", значит пусть так, но если пользователь не хочет такого умолчания, а случайно нажал кнопку, а текст запроса не стыкуется с выбором в списке, тогда как? В этом случае первая опция списка должна быть с пустым значением, и прежде чем отправить данные нужно проверять не пусты ли они.
Во-вторых, если id=search, это текст для поиска, то почему он запускает Ajax запрос? Ведь при каждом вводе символа это будет происходить, и такое оправдано только при "живом поиске", но зачем тогда input type="submit" name="submits" value="Искать!", если она никак не влияет на запрос?
$(function(){
$("#search").submit(function(){
if(!this.rub.value) {
alert('Не выбрано!');
return false;
}
$.ajax({
type: "POST",
url: "view_search.php",
data: $(this).serializeArray(),
cache: false,
success: function(response){
$("#resSearch").html(response);
}
});
return false;
});
});
<form id=search>
<input name="search" type="text" id="search">
<select name="rub">
<option value="">Выберите...</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" value="Искать!">
</form>
search
|
Если вы боле того, что у вас написано, от Ajax не хотите, то пользуйтесь кратким методом:
$.post("view_search.php", $(this).serializeArray(), function(response){
$("#resSearch").html(response);
});
|
| |
|
|
|