У меня есть форма, в которой, если пользователь входит в поисковый запрос, его параметр должен быть передан через jquery, и после получения результатов он должен загрузить результаты в контейнер div. так как я не очень хорошо разбираюсь в 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); }
Я бы сделал так:
$(".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); } }); });
РЕДАКТИРОВАТЬ:
Для размещения загрузчика вам необходимо проверить это здесь:
http://api.jquery.com/category/ajax/global-ajax-event-handlers/
И чтобы показать изображение загрузчика, например:
$("#loading").ajaxStart(function(){ $(this).show(); });
И чтобы скрыть это, когда ajax-вызов завершен:
$("#loading").ajaxComplete(function(){ $(this).hide(); });
Если вы хотите спуститься по маршруту ajax …
$(".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 ()
Вместо использования $ _POST вы можете использовать $ _GET или $ _REQUEST следующим образом:
var searchString = $(".bsearch").val(); $("#bquote").load("path_to_php_file.php?search="+searchString);
Затем, в PHP, замените
$_POST
…с
$_GET