2016-07-27 15 views
0

私は、誰かが私を導くことができれば、それは非常に感謝するだろう、ajaxを取得すると苦労しています。Wordpress ajaxデータベースコール

私はこれをプラグインとしてビルドしています。

私はcourselinkscript.jsという名前のファイルを持っており、この

jQuery(document).ready(function($){ 

jQuery(".courselist").change(function() { 

    jQuery.ajax({ 
      type:"POST", 
      url: my_ajax_object.ajax_url, 
      data: { 'action': 'getLinkedCourses' } 
      //where/what do I put here to work with the data I received. 
    }) 


    }); 
}); 

が含まれていますそして、もちろん、listing.phpという名前の私のメインのphpファイルで、私は「ドンをアヤックスには、この

function getLinkedCourses() { 
    global $wpdb; 
    $results = $wpdb->get_results('SELECT list.ID, list.course, list.cost, list.length, link.CourseID FROM `wp_course_list` AS list INNER JOIN `wp_course_link` as link ON (list.ID=link.LinkID) WHERE link.CourseID = 1', OBJECT); 
    echo json_encode($results); 

wp_die(); 

} 


function wpb_adding_scripts() { 
wp_register_script('courselinkscript', plugins_url('courselinkscript.js', __FILE__), array('jquery'),'1.0', true); 
wp_enqueue_script('courselinkscript'); 
wp_localize_script('courselinkscript', 'my_ajax_object', array('ajax_url' => admin_url('admin-ajax.php'))); 
} 

add_action('wp_ajax_my_list', 'getLinkedCourses'); 

add_action('wp_enqueue_scripts', 'wpb_adding_scripts'); 

私の電話を持っていますそれを実現するために何が必要なのか分かりません。どんな助けもありがとうございます。

+0

正しいです。あなたは、問題がどこにあるのかを知るためにalert()を試すことができます – Anshum

+0

私はReferenceErrorを取得しています:my_ajax_objectは定義されていません、私はどのようにURLの部分を行うのか分かりません。 –

+0

ローカライズスクリプトに間違った名前がついていたと思いますが、修正する方法を見つけました –

答えて

1

以下のコードを使用してください。それは動作するはずです。

function getLinkedCourses() { 
    global $wpdb; 
    $results = $wpdb->get_results('SELECT list.ID, list.course, list.cost, list.length, link.CourseID FROM `wp_course_list` AS list INNER JOIN `wp_course_link` as link ON (list.ID=link.LinkID) WHERE link.CourseID = 1', OBJECT); 
    echo json_encode($results); 

    wp_die(); 

} 


function wpb_adding_scripts() { 
    wp_register_script('courselinkscript', plugins_url('courselinkscript.js', __FILE__), array('jquery'),'1.0', true); 
    wp_enqueue_script('courselinkscript'); 
    wp_localize_script('courselinkscript', 'my_ajax_object', array('ajax_url' => admin_url('admin-ajax.php'))); 
} 

add_action('wp_ajax_getLinkedCourses', 'getLinkedCourses'); 
add_action('wp_ajax_nopriv_getLinkedCourses', 'getLinkedCourses'); 
// add_action('wp_ajax_my_list', 'getLinkedCourses'); 

add_action('wp_enqueue_scripts', 'wpb_adding_scripts'); 

以下のコードを使用してJavaScriptを交換してください:Ajaxのリクエストの中にあなたのURLをご確認ください

jQuery(document).ready(function($){ 

    jQuery(".courselist").change(function() { 

     jQuery.ajax({ 
     type:"POST", 
     url: my_ajax_object.ajax_url, 
     data: { 'action': 'getLinkedCourses' }, 
     //where/what do I put here to work with the data I received. 
     success: function(data) { 
      var obj = jQuery.parseJSON(data); 
      console.log(obj); 
     }, 
     }); 

    }); 
}); 
+0

これは何もしません。ローカライズスクリプトを修正したと思いますか?私はすでにそれを修正しました。私は今結果をどうするか、それらを表示させる方法を知らない –

+0

スクリプトには欠けているものがいくつかあります: 1. wp_register_scriptとwp_localize_scriptでハンドル名が異なります。 2. add_action関数でajaxリクエストを処理するために使用されるフックが正しくありません。 –

+0

さて、あなたのコードを入れました。データが通っているかどうかを確認するために、JavaScriptのファイルで今何をしますか? –

関連する問題