2016-07-27 76 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

请确认您的网址中的Ajax请求是正确的。你可以尝试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:

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文件中做什么,看看数据是否通过? –