2016-07-27 66 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文件中做什麼,看看數據是否通過? –