Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: AJAX - не передает параметр
 
 автор: sedoy   (10.12.2014 в 17:19)   письмо автору
 
 

Значит суть проблемы такая. Делаю поиск с помощью 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;
   });
});

  Ответить  
 
 автор: Enter   (10.12.2014 в 17:51)   письмо автору
 
   для: 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; 
   }); 
}); 

  Ответить  
 
 автор: sedoy   (11.12.2014 в 01:01)   письмо автору
 
   для: 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 примера и при нажатии на кнопку не чего не происходит

  Ответить  
 
 автор: Enter   (11.12.2014 в 10:30)   письмо автору
 
   для: sedoy   (11.12.2014 в 01:01)
 

Нужно видеть весь код, чтобы знать, где ошибка. может, у вас еще где-то есть элемент с айди = селект.

  Ответить  
 
 автор: sedoy   (11.12.2014 в 13:35)   письмо автору
 
   для: 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) > )
    {

        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>    
    





Весь код

  Ответить  
 
 автор: Enter   (12.12.2014 в 10:39)   письмо автору
 
   для: sedoy   (11.12.2014 в 13:35)
 

Обработчик для события селекта где?

  Ответить  
 
 автор: Очередной хакер говорит   (18.12.2014 в 06:17)
 
   для: sedoy   (11.12.2014 в 13:35)
 

Твой php-код уязвим и редактировать твой сайт может любой желающий, не только ты

  Ответить  
 
 автор: confirm   (10.12.2014 в 17:51)   письмо автору
 
   для: 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);  
});

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования