AJAX Live Search is a jQuery plugin / PHP search form that searches and displays the result as you type similar to Google Autocomplete feature.
IE 8+ ✔ | Chrome ✔ | Firefox ✔ | Opera ✔ | Safari ✔ |
Assuming you have this text field:
<input type="text" class='mySearch' id="ls_query">
-
Copy the folders including
ajax
,core
,css
,font
,img
andjs
to your project. -
Specify the required configurations specially database configurations in
Config.php
. The file is located incore
folder and contains back-end settings for the plugin. Check PHP Configs table for more details. -
Include
ajaxlivesearch.min.js
orajaxlivesearch.js
located injs
folder andajaxlivesearch.min.css
orajaxlivesearch.css
located incss
in your project. -
Change the url for
Access-Control-Allow-Origin header
inprocess_livesearch.php
that is located inajax
folder. -
Make sure php files:
Handler.php
andConfig.php
are included in the php page and you have these lines at the very top of the file (Checkindex.php
):if (session_id() == '') { session_start(); } Handler::getJavascriptAntiBot(); $token = Handler::getToken(); $time = time(); $maxInputLength = Config::getConfig('maxInputLength');
-
Lastly, hook the plugin to the text field and pass required options (loaded_at & token):
jQuery("#ls_query").ajaxlivesearch({ loaded_at: , token: , maxInput: , }); ```
Name | Type | Required | Description |
---|---|---|---|
loaded_at | Integer | Yes | This is used to prevent bots from searching. |
token | String | Yes | This is used to prevent CSRF attack. |
url | String | No | Default: ajax/process_livesearch.php. |
cache | Boolean | No | This refers to Ajax request caching. Default: false |
form_anti_bot | String | No | Default: ajaxlivesearch_guard |
slide_speed | String | No | Default: fast |
type_delay | Integer | No | Default: 350 |
max_input | Integer | No | Default: 20 |
min_chars_to_search | Integer | No | Minimum characters length to start searching. Default: 0 |
page_ranges | Array | No | Default: [0, 5, 10] |
page_range_default | Integer | No | Default: 5 |
form_anti_bot_class | String | No | Default: ls_anti_bot |
footer_class | String | No | Default: ls_result_footer |
next_page_class | String | No | Default: ls_next_page |
previous_page_class | String | No | Default: ls_previous_page |
page_limit | String | No | Default: page_limit |
result_wrapper_class | String | No | Default: ls_result_div |
result_class | String | No | Default: ls_result_main |
container_class | String | No | Default: ls_container |
pagination_class | String | No | Default: pagination |
form_class | String | No | Default: search |
loaded_at_class | String | No | Default: ls_page_loaded_at |
token_class | String | No | Default: ls_token |
current_page_hidden_class | String | No | Default: ls_current_page |
current_page_lbl_class | String | No | Default: ls_current_page_lbl |
last_page_lbl_class | String | No | Default: ls_last_page_lbl |
total_page_lbl_class | String | No | Default: ls_last_page_lbl |
page_range_class | String | No | Default: ls_items_per_page |
navigation_class | String | No | Default: navigation |
arrow_class | String | No | Default: arrow |
Name |
---|
onResultClick |
onResultEnter |
onAjaxComplete |
Example:
jQuery(".mySearch").ajaxlivesearch({
loaded_at: <?php echo $time; ?>,
token: <?php echo "'" . $token . "'"; ?>,
maxInput: <?php echo $maxInputLength; ?>,
onResultClick: function(e, data) {
// get the index 1 (second column) value
var selectedOne = jQuery(data.selected).find('td').eq('1').text();
// set the input value
jQuery('.mySearch').val(selectedOne);
// hide the result
jQuery(".mySearch").trigger('ajaxlivesearch:hide_result');
},
onResultEnter: function(e, data) {
// do whatever you want
// jQuery(".mySearch").trigger('ajaxlivesearch:search', {query: 'test'});
},
onAjaxComplete: function(e, data) {
// do whatever you want
}
});
Name |
---|
ajaxlivesearch:hide_result |
ajaxlivesearch:search |
Name | Type | Required | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
dataSources | Array | Yes | Data source for each search text field. Keys are refering to the field HTML id. Currently MySQL and mongoDB (this is in beta) are supported. MySQL data source configs:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
antiBot | String | Yes | This is used as a security technique to prevent form submissions from those bots that do not use JavaScript. In this technique, a hidden field is populated using jQuery with this value. It can have any value, but it MUST be the same as `form_anti_bot` option passed to the jQuery plugin. By default it is set to `ajaxlivesearch_guard`. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
searchStartTimeOffset | Integer | Yes | This is used for another security technique against bots. Some bots immediately submit a form once the page is finished loading. However, for human beings it takes more time to fill a field. By default this parameter is set to 3 seconds. Assigning more than 3 seconds is not recommended. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
maxInputLength | Integer | Yes | This specifies the maximum length of characters in search field. |