正如losmi所说,您需要使用AJAX来避免页面重新加载。如果您使用的是jQuery,则应该执行以下操作:
$("form").on("submit", function(event) {
var data = $(this).serialize());
$.ajax({
type: "POST",
url: /path/to/admin-ajax.php,
data: data,
action: something_descriptive
})
event.preventDefault();
});
编辑:马克提出了一个公平的观点。在wordpress中,AJAX调用应该由wordpress处理。您可以通过使用下面的命名样式向ajax处理程序过滤器添加一个函数来实现这一点
add_filter(\'wp_ajax_something_descriptive\', \'your_ajax_handler\');
add_filter(\'wp_ajax_nopriv_something_descriptive\', \'your_ajax_handler\');
function your_ajax_handler() {
/*do your form handling here, anything passed in the data object will be
available as a $_POST variable. TO return content to the AJAX call echo it out.
Be sure to die() at the end of the function*/
}
在AJAX调用中传递的操作将成为过滤器名称的一部分
wp_ajax_ACTION
和登录用户,以及
wp_ajax_nopriv_ACTION
对于未登录的用户。在野外,请比我在jQuery目标中更具体,在操作它们之前,始终检查以确保事物存在,并使函数和操作名称符合逻辑。