Ajax请求成功,但我从数据库中得不到任何东西?

时间:2014-07-17 14:51:01

标签: jquery ajax wordpress

我需要使用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

如果您需要更多信息,请问我!

1 个答案:

答案 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); 
?>