如何在wordperss中使用ajax从多个自定义表中获取数据

时间:2017-01-17 15:28:38

标签: jquery ajax wordpress

如何使用ajax从wordpress中的多个自定义表中获取数据。我在wordpress数据库状态,城市,城镇,pincode有四个表,我想从数据库中按名称或密码搜索结果。

我的主题

中有一个名为advanced-searchform.php的自定义搜索框
<form method="get" id="advanced-searchform" role="search" action="<?php echo esc_url( home_url( '/' ) ); ?>">

<h3><?php _e( 'Advanced Search', 'textdomain' ); ?></h3>

 <!--PASSING THIS TO TRIGGER THE ADVANCED SEARCH RESULT PAGE FROM functions.php--> 
<input type="hidden" name="search" value="advanced">

<label for="name" class=""><?php _e( 'Search By Name: ', 'textdomain' ); ?></label><br>
<input type="text" id="cityname" value="" placeholder="<?php _e( 'Enter Name', 'textdomain' ); ?>" name="name" />

<label for="name" class=""><?php _e( 'Search By Code: ', 'textdomain' ); ?></label><br>
<input type="text" value="" placeholder="<?php _e( 'Enter Pin Code', 'textdomain' ); ?>" name="pincode" />

<input type="submit" id="searchsubmit" value="Search" />

在functions.php中注册Hook

enter function wpse_load_custom_search_template(){
if( isset($_REQUEST['search']) == 'advanced' ) {
    require('advanced-search-result.php');
    die();
}}add_action('init','wpse_load_custom_search_template');

并显示结果advanced-search-result.php

$keyword = $_GET['name'];
$query = "(SELECT state_name as type FROM state WHERE state_name LIKE '%" .$keyword . "%') 
       UNION
(SELECT district_name as type FROM district WHERE district_name LIKE '%" .$keyword . "%') 
       UNION
   (SELECT city_name as type FROM city WHERE city_name LIKE '%" .$keyword. "%')";

$result = $wpdb->get_results($query);var_dump($result);

请告诉我如何在自动完成时获取带有ajax的数据,当我输入3-4个数据时,显示来自数据库的匹配数据提示。

1 个答案:

答案 0 :(得分:0)

我发现您使用了错误的钩子来调用您的函数来获取搜索结果。

要调用AJAX响应函数,您必须使用以下钩子:

add_action( 'wp_ajax_nopriv_[actionname]', '[functionname]' );
add_action( 'wp_ajax_[actionname]', '[functionname]' );

function [functionname]() {
}

在你的jQuery代码中(从你调用ajax的地方),你需要传递&#34; action&#34;变量和数据。以下是jQuery和function.php代码

的一个示例

jQuery代码:

data = {
        action : 'test',
        [other parametervalues]
};
jQuery.post('<?php echo admin_url( 'admin-ajax.php' );?>', data, function(response) {           
    // code based on your response from AJAX
}); 

Function.php中的代码

add_action( 'wp_ajax_nopriv_test', 'callbackFunction' );
add_action( 'wp_ajax_test', 'callbackFunction' );

function callbackFunction() {
     // your code
    echo ""; // whatever you want to send in AJAX response
    die();
}

如果您需要任何进一步的帮助,请与我们联系。