2016-09-01 7 views
1

私はwordpressで始まり、それまではそれほど問題はありませんでした。ワードプレスでajaxを作れない

私がdatabaseを参照したいのは、ユーザがSELECTフォーム入力を更新しようとしている値を変更するときにajaxを使用することです。簡単にajaxphpphpjqueryを使用して、私はそれの背後にある概念をワードプレスで把握していないようです。

投稿されるすべてのPHPは、私のプラグインに自分のフォームがあるファイルに直接あります。テストの目的のために、私は現在のところ、ナビゲータコンソールのjsから何かを取得しようとしています。

PHP(ワードプレス):

add_action("wp_enqueue_fetch_guide", "fetch_guide"); 
function fetch_guide(){ 
wp_enqueue_script('guide', plugins_url('/js/jquery.guide.js', __FILE__)); 

    wp_localize_script('guide', 'fetchGuide', admin_url('admin-ajax.php')); 
} 

add_action("wp_ajax_nopriv_fetch_guide_return","fetch_guide_return"); 
add_action("wp_ajax_fetch_guide_return","fetch_guide_return"); 

function fetch_guide_return(){ 
    global $wpdb; 
    if(isset($_POST["id"])){ 
     $id = $_POST["id"]; 
     $table = $wpdb->prefix."guide"; 

     $guide = $wpdb->get_row("SELECT * FROM ".$table." WHERE id_guide LIKE ".$id.";"); 

     print json_encode($guide); 
    } 
} 

JS:

$(function(){ 
    jQuery("#chooseGuide").on("change", function(){ 
     jQuery.ajax({ 
      url : fetchGuide.ajax_url, 
      type : "post", 
      data : {"id":guide.value}, 
      dataType: "json" 
     }).success(function(data){ 
      if(data != 0){ 
       console.log(data); 
      } 
     }); 
    }); 
}); 
+0

は、実行されている変更イベントのための機能ですか? AJAXの呼び出しが行われているだけで、ログはありませんか?失敗機能を入れて、それがログに記録されているかどうかを確認してください。 – Fencer04

答えて

0

ここでの問題は、あなたのjsにajax_urlを正しく指していないことです。これらのライン

wp_localize_script('guide', 'fetchGuide', array('ajax_url' => admin_url('admin-ajax.php'))); 

wp_localize_script('guide', 'fetchGuide', admin_url('admin-ajax.php')); 

は、これらが適切にajax_urlを指すようになりますし、あなたの機能が動作するはず

アップデートがうまく

0

ワードプレス自体にすべての要求を引っ張るための.htaccessを変更します。あなたがajaxを実行している場合は、リダイレクトプラグインを入れるか、またはwordpressドメインの外部からPHPプログラムを攻撃する必要があります。

+0

とても間違っています。 –

0

JSファイルはロードされていますか?あなたのwp_localize_scriptでは、ajax_urlが完了していないようです。 admin-ajax.phpから呼び出すアクションを適切に指定していますか?

fetchGuide.ajax_urlの値はadmin-ajax.php?action=fetch_guide_returnのようになります。あれは正しいですか ?

コンソールには何かありますか?申し訳ありませんが、まだコメントできません。十分なポイントがありません:p

0

は、あなたの答えありがとうございました。私はそれがwordpressでどのように働いているのかを理解するのに困難を感じました。

答えが見つかりましたが、私がしたことのほとんどを変更しなければならない場合。

これは、私はJSのために最後に持っているものです。

add_action('admin_footer', 'my_fetch_guide'); 
function my_fetch_guide() { ?> 
    <script type="text/javascript" > 
     var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>"; 
     jQuery("#chooseGuide").on("change", function(){ 
      jQuery.ajax({ 
        type:"POST", 
        url: ajaxurl, 
        data: { 
         action: "fetch_guide_return", 
         id: jQuery(this).val() 
        }, 
        dataType: "json" 
      }).success(function(data){ 
       jQuery("#wpgc_guide_form").prepend("<input type='hidden' name='idnumber' id='idnumber' value='"+data["id_guide"]+"'/>"); 
       jQuery("#name").val(data["name"]); 
       jQuery("#firstName").val(data["first_name"]); 
       jQuery("#mail").val(data["mail"]); 
       jQuery("#phone").val(data["phone_number"]); 
      }).error(function(errorThrown){ 
       alert(errorThrown); 
      }); 
     }) 
    </script> 
<?php } 

とPHP:

add_action("wp_ajax_nopriv_fetch_tour_return","fetch_tour_return"); 
add_action("wp_ajax_fetch_tour_return","fetch_tour_return"); 

function fetch_tour_return(){ 
    global $wpdb; 
    if(isset($_POST["id"])){ 
     $id = $_POST["id"]; 
     $table = $wpdb->prefix."tour"; 

     $tour = $wpdb->get_row("SELECT * FROM ".$table." WHERE id_tour LIKE ".$id.";"); 

     print json_encode($tour); 

     die(); 
    } 
} 
関連する問題