2017-08-24 1 views
0

私は、同じページに結果をロードする必要がある場所に挿入できるカスタムフィールド検索をしようとしています。私はajaxがトリックだと思っていましたが、私の検索テンプレートコード:ajaxを使用してテンプレートを取得する

<script> 
    jQuery(document).ready(function($){ 
     $("#SearchButton").click(function(){ 
      $.ajax({ 
       type: "GET", 
       ulr:'<?php echo admin_url('admin-ajax.php'); ?>', 
       data: { action : 'inline_search', Sinput: $("#searchinput").val() }, 
       success: function(result) { 
        $("#SearchResults").html(result); 
       } 
      }); 
      $("#SearchResults").css("display","block") 
     }); 
    }); 
</script> 
<div class="flexible-content__content"> 
    <div class="column"> 
     <div class="row"> 
      <?php the_sub_field('content'); ?> 
     </div> 
    </div> 
    <div class="column"> 
     <div class="row"> 
       <input id="searchinput" type="text" value="<?= $search_query; ?>" name="s" id="header-search-input" placeholder="<?php echo esc_attr_x('Search …', 'placeholder') ?>" style="border-right: none;"> 
       <bttuon id="SearchButton" class="gform_button button" value="Search">Search</bttuon> 
     </div> 
    </div> 
</div> 
<div id="SearchResults" style="max-width: 70rem; margin:auto;display:none"></div> 

と私はfunction.phpにこれを追加しました:

add_action('admin_enqueue_scripts', 'my_enqueue'); 
function my_enqueue($hook) { 
    // in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value 
    wp_localize_script('ajax-script', 'ajax_object', 
     array('ajax_url' => admin_url('admin-ajax.php'), 'we_value' => 1234)); 
} 

function inline_search() 
{ 
    echo "hello world"; 
    get_template_part('templates/inline-search'); 
    wp_die(); 
} 
add_action('wp_ajax_nopriv_inline_search', 'inline_search'); 
add_action('wp_ajax_inline_search', 'inline_search'); 
+0

あなたは 'admin_enqueue_scripts'フックを使用しているので、wp-adminで検索しようとしていますか? – mokiSRB

+0

私がしようとしているのは、私のページにインライン検索テンプレートをロードすることです。誰かがそのアクションを使用していたので、WP設定として必要と思っていました。 – spiderangel

答えて

0

PHPの一部は次のようになります。

add_action('admin_enqueue_scripts', 'my_enqueue'); 
function my_enqueue($hook) { 
    // in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value 
    wp_register_script('ajax-script', SCRIPT_PATH, array('jquery')); 
    wp_localize_script('ajax-script', 'ajax_object', 
     array('ajax_url' => admin_url('admin-ajax.php'), 'we_value' => 1234)); 
    wp_enqueue_script('ajax-script'); 
} 

function inline_search() 
{ 
    echo "hello world"; 
    get_template_part('templates/inline-search'); 
    wp_die(); 
} 
add_action('wp_ajax_nopriv_inline_search', 'inline_search'); 
add_action('wp_ajax_inline_search', 'inline_search'); 

はその後JSで、あなたはajax_object.we_valueようajax_objectへのアクセス権を持っています。 ajaxタイプのPOSTを使用します。 @mokiSRBため

$.ajax({ 
       type: "POST", 
       url: ajax_object.ajax_url, 
       data: { action : 'inline_search', Sinput: $("#searchinput").val() }, 
       success: function(result) { 
        $("#SearchResults").html(result); 
       } 
      }); 
+0

SCRIPT_PATHの代わりになるべきことは何ですか? – spiderangel

+0

スクリプトを移動してファイルを区切り、そのプレースホルダの代わりにそのパスを配置します。 – mokiSRB

+0

私はまだエラーメッセージが表示されています:Uncaught ReferenceError:ajax_objectが定義されていません – spiderangel

0

おかげでそれを指摘するが、全体の問題は、私は愚かフィードタイプミスでした。

ulr:をURLに変更すると修正されました。

関連する問題