2016-01-23 30 views
0

我想打電話給/home/***/public_html/subdomains/busuioc/wp-content/themes/scalia/json_gallery_data.php
json_gallery_data.php的內容是:如何從ajax主頁wordpress中的數據庫中提取數據?

global $wpdb; 
$programs = $wpdb->get_results("SELECT * FROM program_tv"); 
$tv=array(); 
foreach ($programs as $program){ 
    $tv[]=$program->day; 
} 
echo json_encode($tv); 

ajax的文件是:

jQuery(document).ready(function(){ 
    loadData(); 
}); 
var loadData=function(){ 
    jQuery.ajax({ 
     type:"POST", 
     url: 'site.com/wp-content/themes/scalia/json_gallery_data.php' 
    }).done(function(data){ 
     var videos=JSON.parse(data); 
     for(var i in videos){ 
      alert(videos[i]); 
     } 
    }); 

};

+1

將AJAX類型更改爲GET! –

+0

'console.log(data)'看看它是否需要'JSON.parse'? –

+0

GET site.com/wp-content/themes/scalia/json_gallery_data.php 500(內部服務器錯誤) –

回答

2

$wpdb將不會被定義,因爲你繞過WordPress的,你必須使用WordPress的'阿賈克斯api有權訪問它。

把你的代碼塊在函數內部,並將其放置在functions.php文件的主題(如果你想保持在一個單獨的文件,它包含在functions.php文件)

function my_ajax_handler(){ 
    global $wpdb; 
    $programs = $wpdb->get_results("SELECT * FROM program_tv"); 
    $tv=array(); 
    foreach ($programs as $program) 
    { 
     $tv[]=$program->day; 
    } 
    echo json_encode($tv); 
    wp_die(); 
} 

你必須與WordPress的AJAX API 「註冊」 它,你做這樣的

add_action('wp_ajax_call_my_ajax_handler', 'my_ajax_handler'); 
add_action('wp_ajax_nopriv_call_my_ajax_handler', 'my_ajax_handler'); 

wp ajax (action)

wp_ajax_nopriv_(action)

現在,您打算在您的ajax請求中調用的文件是site.tld/wp-admin/admin-ajax.php。你可以對它進行硬編碼,但這不是最好的做法。理想情況下,你應該把它存儲在一個JavaScript變量中,而wordpress有一個方便的功能來完成這個功能。把下面的回調函數,您使用的是enqueue your scripts/styles

wp_enqueue_script('my-ajax-script', get_stylesheet_directory_uri() . '/path/to/script.js', array('jquery')); 
wp_localize_script('my-ajax-script', 'my_ajax_object', array('ajax_url' => admin_url('admin-ajax.php'))); 

wp_localize_script

現在你要做的是修改你的Ajax調用包括我們之前註冊的AJAX觸發,

jQuery.ajax({ 
    type:"POST", 
    url: my_ajax_object.ajax_url, 
    data: { 'action': 'call_my_ajax_handler' } 
}) 

請注意call_my_ajax_handler與我們之前「註冊」過的相同。

假設沒有任何錯誤,你應該看到預期的結果。

  • 沒有任何代碼已經過測試。

請參閱AJAX in Plugins codex條目。

+0

非常感謝vidja.It的作品 –

+0

肯定的東西:) 拿一個看看[check_ajax_referer](https://codex.wordpress.org/Function_Reference/check_ajax_referer),特別是如果你打算做管理端的東西。 – vidja

相關問題