Задать вопрос
@mRForumman

Как избавиться от автообновления скрипта?

Дело такое, пишу простой поиск, но столкнулся с проблемой автообновления страницы при каждом нажатии на кнопку формы.

Мне нужно чтобы при клике на кнопку "НАЙТИ" было совершено перенаправление на страницу где должна выводиться найденная инфа. Для этого в jq я использую эту сроку:

!!!
window.location.href = '/search?'+ search;

Но данные пропадают каждый раз как я нажимаю на кнопку. Потому что срабатывает вот это пере направление. Не знаю что делать. Как мне этого избежать? Что нужно сделать? Может быть написать проверку чтобы строка срабатывала только на главной странице?, но у меня такое не вышло или я просто не знаю как её написать в данном случае!

В принципе скрипт рабочий. Данные с формы отправляеюся и в итоге я поучаю ответ, но появляется на миг и сразу же исчезает из-за функции перенаправления.

Форма:
<form action="" method="get" name="search" id="search_form">
    <input type="text" name="s" id="search"/>
    <input type="submit" value="Поиск">
</form>


Скрип
$('#search_form').on('submit',function () {
        var search = $(this).serialize();

        window.location.href = '/search?'+ search;

        $.ajax({
            url:"/search/dd",
            method:"GET",
            data:search,
            success:function (data) {
                $('#test2').html(data);
            },
            error: function () {
                console.log('Error');
            }
        });
    })


Я уже не знаю что делать. Помогите =)
  • Вопрос задан
  • 125 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
@sidni
Php Developer
Думайте в этом направлении
$('#search_form').on('submit',function (e) {
        e.preventDefault();
        var search = $(this).serialize();

        //window.location.href = '/search?'+ search;

        $.ajax({
            url:"/search/dd",
            method:"GET",
            data:search,
            success:function (data) {
                $('#test2').html(data);
            },
            error: function () {
                console.log('Error');
            }
        });
    })
Ответ написан
@mRForumman Автор вопроса
Форма из шапки стандартного шаблона:
<form action="/search" method="post" name="search" id="search_form">
    <input type="text" name="s" id="search_input"/>
    <input type="submit" name="bsearch" value="Поиск">
</form>


Контроллер:
class SearchController extends AppController
{
    public function indexAction()
    {
        if (isset($_POST['bsearch'])){
 
            $search_model = new Search();
 
            $search_data = $_POST['s'];
 
            $result = $search_model->search($search_data);
        }
        $this->set(compact('data', 'result'));
    }
}


Модель:
class Search extends Model
{
    public function search($word){
        $word = htmlspecialchars($word);
 
        if($word === ''){ return false; };
 
        $query = '';
 
        $array_words = explode(' ',$word);
 
        foreach ($array_words as $key => $value){
            if (isset($array_words[$key-1])){
                $query .= ' OR ';
            }
            $query .= 'title LIKE "%'. $value .'%"';
        }
 
        $query_reruslt =  $this->selectData($query);
 
        return $this->sortData($query_reruslt);
 
    }
 
    public function selectData($query){
        return $this->db->query("SELECT * FROM products WHERE {$query}");
    }
 
    public function sortData($query_reruslt){
        $data = [];
        foreach ($query_reruslt as $item){
            $data[$item['id']] = $item;
        }
        return $data;
    }
}


Во вьюшке так чисто для теста:
<?php foreach ($debug as $item):?>
 
<?php echo  $item['title']?>
 
<?php endforeach; ?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы