我需要设置wordpress ajax搜索结果,但我的方法不是在单击按钮时检索结果而是将我重定向到另一个站点(myurl.com?s=term).我正确调用了admin-ajax.PHP但是设置错误.是什么原因造成了这个问题?
- //Script to activate ajax
- jQuery(document).ready(function($){
- var search_val=$("#s").val();
- $('#searchsubmit').click(function(){
- $.post(
- WPaAjax.ajaxurl,{
- action : 'wpa56343_search',search_val : search_val
- },function( response ) {
- $('#results').append( response );
- }
- );
- });
- });
- //function to setup wp_query
- add_action('wp_ajax_wpa56343_search','wpa56343_search');
- function wpa56343_search(){
- global $wp_query;
- $search = $_POST['search_val'];
- $args = array(
- 's' => $search,'posts_per_page' => 5
- );
- $wp_query = new WP_Query( $args );
- get_template_part( 'search-results' );
- exit;
- }
- //html
- <div id="my_search">
- <form role="search" method="get" id="searchform" action="http://myurl.com/" >
- <input type="text" value="" name="s" id="s" />
- <input type="submit" id="searchsubmit" value="Search" />
- </form>
- </div>
- <div id="results"></div>
解决方法
您应该将您的代码包装在document.ready中
- $(document).ready(function(){
- $("#searchsubmit").click(function(e){
- e.preventDefault();
- var search_val=$("#s").val();
- $.post(search.PHP,{search_string:search_val},function(data){
- if(data.length>0){
- $("#results").html(data);
- }
- });
- });
- });
更新:
- $(document).ready(function(){
- $("#searchsubmit").click(function(e){
- e.preventDefault();
- var search_val=$("#s").val();
- $.ajax({
- type:"POST",url: "./wp-admin/admin-ajax.PHP",data: {
- action:'wpa56343_search',search_string:search_val
- },success:function(response){
- $('#results').append(response);
- }
- });
- });
- });
在你的functions.PHP中
- add_action('wp_ajax_nopriv_wpa56343_search','wpa56343_search'); // for not logged in users
- add_action('wp_ajax_wpa56343_search','wpa56343_search');
- function wpa56343_search()
- {
- // code
- }