我需要使用ajax从数据库中检索数据。 ajax请求是成功的,但我没有从数据库获取任何数据。 JS
jQuery("#loadF").change(function(){
jQuery.ajax({
url: "http://localhost/wordpress/wp-admin/admin-ajax.php",
dataType: 'json',
type: 'POST',
data: {
'action' : 'my_load_filter',
'name' : 'ada',
'value' : $( '#loadF option:selected' ).val()
},
success: function(data) {
alert('Success!');
}
});
});
PHP-我呼叫回调
//Load data
add_action( 'wp_ajax_my_load_filter', 'my_action_load_filter_callback' );
function my_action_load_filter_callback()
{
global $wpdb;
$filterValue=$_POST['value'];
$loadFilter = $wpdb->get_row( $wpdb->prepare("SELECT something FROM tabel WHERE name= %s",$filterValue ));
foreach ($loadFilter as $loadFilter_preference)
{
echo $loadFilter_preference;
}
die();
}
它不起作用,有没有人知道我的代码中可能有什么问题?
我在WP中被篡改,并且DB没有拼写错误。
修改
我发现了错误,但我无法修复它:
如果Ajax请求在wp-admin / admin-ajax.php中失败,则为响应 取决于失败的原因,将为-1或0。 此外,如果请求成功,但Ajax操作不成功 匹配用add_action('wp_ajax_(action)'定义的WordPress钩子, ...)或add_action('wp_ajax_nopriv_(action)',...),然后 admin-ajax.php将回复0
如果您需要更多信息,请问我!
答案 0 :(得分:0)
如果您从数据库中获取任何内容,$ loadFilter将成为一个对象(根据https://codex.wordpress.org/Class_Reference/wpdb#SELECT_a_Row)。
您需要从所需的对象输出实际属性。或者,只需使用json_encode,然后取消foreach()循环。
function my_action_load_filter_callback()
{
global $wpdb;
$filterValue=$_POST['value'];
$loadFilter = $wpdb->get_row( $wpdb->prepare("SELECT something FROM tabel WHERE name= %s",$filterValue ));
echo json_encode($loadFilter);
}
修改... 强>
刚刚看到你没有从数据库中得到任何回报。那时候不要担心AJAX部分 - 你需要弄清楚为什么你的数据库什么也没有返回。您选择的表格中是否有任何行?表格和列名称拼写是否都正确?
要帮助回答这些问题,请确保PHP错误全部开启。
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
?>