【问题标题】:Ajax request succed but I dont get anything from database?Ajax 请求成功,但我没有从数据库中得到任何东西?
【发布时间】:2014-09-08 12:28:32
【问题描述】:

我需要使用 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)', ...) 或 add_action('wp_ajax_nopriv_(action)', ...),然后 admin-ajax.php 将响应 0

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

【问题讨论】:

  • 您收到success 警报了吗?
  • 在 phpMyAdmin(或类似的)中运行 SELECT 语句是否会返回任何内容?如果你 var_dump($loadFilter);分配后?
  • 是的,我收到成功警报,响应为 0。
  • 我也尝试了另一种说法,但我没有得到任何东西!它没有向我展示任何关于 var_dump 的信息。我想在不同的元素中获得响应,这样我就可以看到它从 var_dump 返回的内容,但我不知道该怎么做。我是ajax的新手。但首先我想从数据库中获取任何信息,以便进一步继续。
  • 你如何确定响应是什么?

标签: jquery ajax wordpress


【解决方案1】:

如果您从数据库中返回任何内容,$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); 
?>

【讨论】:

  • 感谢您的回复,但我仍然没有从数据库中得到任何信息,我已经仔细检查了列名,我只有两列,有名称和其他内容。
猜你喜欢
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多