Wordpress ajax数据库调用

时间:2016-07-27 06:28:13

标签: php jquery 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. 
    })


    });
});

然后在我的主要php文件中命名为course-listing.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' );  

我打电话给ajax不会工作,因为我不明白需要做些什么才能使其成为现实。任何帮助表示赞赏。

1 个答案:

答案 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:

 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);
         },
      });

   });
});