简单地说,您不能在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 );
}
}