保存表单后重定向;但仍使用wp_die()

时间:2016-07-21 作者:TheBigK

我正在尝试将用户重定向到特定位置。重定向是处理ajax调用的函数的一部分。因此,我的代码的结尾行如下-

wp\\U重定向(“/仪表板/”);wp\\U模具(1);

现在,我无法找出这种方法的确切错误。我想告诉AJAX执行成功,并将用户重定向到正确的位置。

我如何做到这一点?非常感谢您的帮助。

1 个回复
最合适的回答,由SO网友:cybmeta 整理而成

简单地说,您不能在Ajax回调中从服务器重定向用户。Ajax回调中的重定向重定向Ajax请求本身,它不会将用户重定向到新位置。

我希望你明白我的意思。记住,根据定义,Ajax是异步的。

因此,您需要考虑另一个工作流。

例如(仅举一个例子,工作流可以是最适合您需要的),服务器可以使用新的位置URL响应Ajax请求;然后Ajax处理程序(客户端)检查响应并执行重定向:

Ajax calback(服务器端):

add_action( \'wp_ajax_my_action\', \'cyb_action_callback\' );
function cyb_action_callback() {
    // Something better than esc_url_raw() in this context??
    $data = array(
                      \'location\' => esc_url_raw( \'https://some.other/location\' );
    );
    // See also wp_send_json_error() and wp_send_json().
    wp_send_json_success( $data );
}
Ajax处理程序客户端:

jQuery(document).ready(function($) {

    var data = {
        \'action\': \'my_action\',
        \'whatever\': 1234
    };

    jQuery.get( ajaxurl, data, function( response ) {
            window.location.href( response.data.location );
   }

}

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i