Intereting Posts

передача имени id при нажатии с помощью ajax на php

Я использую Ajax для создания фильтрованной поисковой системы. У меня есть три разных вкладки, где пользователи могут искать по именам, по категориям и местоположению. Я могу seacrh, когда пользователь вводит имя в поле поиска (вкладка-1). Во второй вкладке, как я могу использовать один и тот же Ajax, поэтому, когда пользователь щелкает ссылку, идентификатор передается в сценарии ajax на мой php, и этот id передается как varibale в моем запросе mysql.

Впервые с Ajax любая помощь будет высоко оценена.

AJAX скрипт:

$(document).ready(function () { $("#search_results").slideUp(); $("#button_find").click(function (event) { event.preventDefault(); search_ajax_way(); }); $("#search_query").keyup(function (event) { event.preventDefault(); search_ajax_way(); }); }); function search_ajax_way() { $("#search_results").show(); var search_this = $("#search_query").val(); $.post("search.php", { searchit: search_this }, function (data) { $("#display_results").html(data); }) } 

HTML:

 <form id="searchform" method="post"> <input id="search_query" name="search_query" placeholder="What You Are Looking For?" size="50" type="text" /> <input id="button_find" value="Search" type="submit" /> </form> <div id="display_results"> </div> <div class="tab"> <input id="tab-2" name="tab-group-1" type="radio" /> <label for="tab-2">Search by Category</label> <div class="content"> <div id="searchbycategory"> <div id="nav_1_a"> <ul> <li><a href="#">All Categories</a></li> <li><a href="#" id="dummy">Category-1</a></li> <li><a href="#">Category-2</a></li> <li><a href="#">Category-3</a></li> </ul> <div id="display_results"> </div> </div> <!-- END nav_1_a --> </div> </div> </div> <div class="tab"> <input id="tab-3" name="tab-group-1" type="radio" /> <label for="tab-3">Search by location</label> <div class="content"> <div id="searchbylocation"> <div id="nav_1_a"> <ul> <li><a href="#">All</a></li> <li><a href="#">Location-1</a></li> <li><a href="#">Location-2</a></li> <li><a href="#">Location-3</a></li> <li><a href="#">Location-4</a></li> </ul> </div> 

search.php:

 <?php $connection = mysql_connect('localhost', 'user', 'pwd'); $db = mysql_select_db('db', $connection); $term = strip_tags(substr($_POST['searchit'],0, 100)); $term = mysql_escape_string($term); echo "Enter name to search"; else{ $sql = mysql_query("select col1,col2 from tab2 where tab2.somecolm like '{$term}%'", $connection); echo "<ul>"; if (mysql_num_rows($sql)){ while($info = mysql_fetch_array($sql, MYSQL_ASSOC ) ) { echo "<li>"; echo "<a href=\"http://" . $info['col1'] . ".html\">" . $info['col2'] . "</a>"; echo "</li>"; } }else{ echo "No matches found!"; } echo "</ul>"; } ?> 

Вы говорите, что хотите передать идентификатор при нажатии ссылки, но у вас нет кода, который обрабатывает клики по ссылкам. Добавьте обработчик кликов для ссылок и измените search_ajax_way() чтобы принять необязательный идентификатор при нажатии ссылок:

 $("a").click(function (event) { event.preventDefault(); search_ajax_way(this.id); }); function search_ajax_way(clickedId) { $("#search_results").show(); var postData = { searchit: $("#search_query").val() }; if (clickedId) { postData.clickedId = clickedId; } $.post("search.php", postData, function (data) { $("#display_results").html(data); }) } 

Идентификатор будет доступен в PHP как $_POST['clickedId']

Изменить: На самом деле, я бы рефакторинг использовал search_ajax_way() как обработчик события, а не вызывал его из анонимного обработчика событий:

 $("#button_find,a").click(search_ajax_way); $("#search_query").keyup(search_ajax_way); function search_ajax_way(event) { event.preventDefault(); $("#search_results").show(); var postData = { searchit: $("#search_query").val(), clickedId: this.id }; $.post("search.php", postData, function (data) { $("#display_results").html(data); }) } 

Передать идентификатор блока в функцию search_ajax_way :

 $("#search_query").keyup(function(event){ event.preventDefault(); search_ajax_way(this.id); }); 

Затем передайте идентификатор блока в параметре data в ajax-запросе:

 function search_ajax_way(blockId){ $("#search_results").show(); var search_this=$("#search_query").val(); $.post("search.php", {searchit : search_this, 'blockId': blockId}, function(data){ $("#display_results").html(data); }) } 

Теперь blockId будет доступен в вашем php-скрипте как $_POST['blockId'] .