2010-07-26 5 views
3

У меня есть форма, в которой, если пользователь входит в поисковый запрос, его параметр должен быть передан через jquery, и после получения результатов он должен загрузить результаты в контейнер div. так как я не очень хорошо разбираюсь в jquery, как бы я это сделал?Передача параметра поиска через jquery

HTML:

//currently the data is being displayed on pageload: 
    $(document).ready(function() { 
    $("#bquote").load("quotes_in.php") 
    }); 

    $(".bsearch") 
    .keydown(function() { 
    //pass the parameter to the php page 

     //display in div #bquote 

    }); 


<!-- Begin Search --> 
     <div id="search" style="display:none;"> 
       <input type="text" class="bsearch" name="search" value="Search" /> 
     </div> 
<!-- End Search --> 

PHP [с использованием ООП]:

if (isset($_POST["search"])) 
{ 
    $quotes->searchQuotes(); 
} 

PHP класс:

$search = $_POST['search']; 

    $sql = "SELECT * FROM thquotes WHERE cQuotes LIKE '%" 
    . mysql_real_escape_string($search) ."%' ORDER BY idQuotes DESC"; 


    try { 

    $query = $this->_db->prepare($sql); 
    $query->execute(); 

    if(!$query->rowCount()==0) 
    { 
    while($row = $query->fetch()) 
    { 
    echo $this->formatSearch($row); 
} 

ответ

3

я бы таким образом:

$(".bsearch").keydown(function() { 
    //create post data 
    var postData = { 
    "bsearch" : $(this).val(), 
    "anotherParam" : "anotherValue" 
    }; 

    //make the call 
    $.ajax({ 
    type: "POST", 
    url: "yourAjaxUrl.php", 
    data: postData, //send it along with your call 
    success: function(response){ 
     alert(response); //see what comes out 
     //fill your div with the response 
     $("#bquote").html(response); 
    } 
    }); 
}); 

EDIT:

Для ввода загрузчика вам нужно проверить это здесь:

http://api.jquery.com/category/ajax/global-ajax-event-handlers/

И показать фронтальное изображение например:

$("#loading").ajaxStart(function(){ 
    $(this).show(); 
}); 

И спрятать его при завершении ajax-звонка:

$("#loading").ajaxComplete(function(){ 
    $(this).hide(); 
}); 
+0

спасибо, это работает, но что, если я хочу отображать результаты в контейнере #bquote? Кроме того, поскольку он получает данные, нет никаких признаков того, что он извлекает данные в фоновом режиме. где я буду показывать loadeR? – input

+0

у вас есть все в ответе сейчас :) проверьте отредактированные части ... – KakambaWeb

+0

спасибо! принято. :) – input

0

Вместо того, чтобы использовать $ _POST, вы можете использовать $ _GET или $ _REQUEST например:

var searchString = $(".bsearch").val(); 
$("#bquote").load("path_to_php_file.php?search="+searchString); 

Затем в PHP, заменить

$_POST 

... с

$_GET 
1

Если вы хотите идти вниз Аякса маршрут ...

$(".bsearch").keydown(function() { 

    // Get the current input value 
    var value = $(this).val(); 

    //pass the parameter to the php page 
    $.ajax({ 
     type: "POST", 
     url: "some.php", // replace this with the right URL 
     data: "bsearch=" + value, 
     success: function(msg){ 
      $("#search").html(msg); 
     } 
    });   
}); 

Читайте на jQuery.ajax() и если вы перевернете это окно поиска в нужную форму, используйте jQuery.serialize()

+0

спасибо! что, если я хочу отображать результаты в контейнере #bquote? – input

 Смежные вопросы

  • Нет связанных вопросов^_^