【问题标题】:Wordpress wp_send_json_success() returns undefined on successWordpress wp_send_json_success() 成功返回 undefined
【发布时间】:2021-02-17 12:50:55
【问题描述】:

我是 wordpress 中 Ajax 查询的新手。我在 JS 中有一个 jquery 请求和一个成功运行并按其应有的方式执行的 PHP 处理程序。但是,使用 wp_send_json_success() 发回的响应返回未定义,我不知道为什么。

javascript 请求:

    $('.iflo-visibility-option-item').on('click', function() {
        var post_id = $(this).attr( 'id' );
        console.log(post_id);   
        $.ajax({
            type: 'POST',
            url: ajax_object.ajaxurl,
            data: {
                action: 'iflo_update_post_visibility',
                post_id: post_id,
                visibility: 'Library',
                success: function ( response, status, XHR ) {
                    alert(status);
                }
            }
        });
    });
});

处理程序中应该返回的 PHP 块。

update_post_meta ( $post_id, $key, $_REQUEST ['visibility']);
$response = array('response' => 'Visibility was updated.',);
iflo_write_log($response);
wp_send_json_success( $response );

当响应写入日志时,我得到以下信息: Array ( [response] => Visibility was updated. )

数据库更新成功。任何想法为什么响应没有到达客户?

【问题讨论】:

  • 也许停止将success 包装成data ...?
  • 试试:success: function ( response) { alert(response.response); }

标签: php jquery ajax wordpress


【解决方案1】:

我很确定这是因为您将成功函数放入 data: 属性中。另外,我没有看到您声明数据类型。尝试像这样形成您的 ajax 函数:

     $.ajax({
        url: ajax_object.ajaxurl,
        type: 'POST',
        data: $(form).serialize() + "&action=" + "validate_email_input",
        dataType: 'json',
        beforeSend: function () {
            //Before sending, like showing a loading animation
        },
        success: function(data){
            console.log(data);
        },
        error: function(data) {
            console.log(data);
        },
    });

这应该会修复未定义的响应。

【讨论】:

  • 谢谢,我已经更新了,现在我收到了回复。还因为愚蠢而把我的头撞到墙上;-)
  • 每个人都会遇到这种情况,我自己已经掌握了为自己的愚蠢错误撞墙的艺术:P
猜你喜欢
  • 2018-07-19
  • 2023-03-20
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
相关资源
最近更新 更多