重定向至提交帖子后的页面

时间:2018-02-19 作者:Jeann Pierre

我有一个表单,它将post数据提交给PHP函数search,search函数查询我添加到WordPress数据库的表。提交后,我想重定向到我在仪表板中添加的结果页面。到目前为止,我只能使用Ajax重定向,但我想从PHP文件重定向。

AJAX

$(\'#finderForm\').on(\'submit\', function(e) {
  //e.preventDefault();

  var form = $(\'#finderForm\').serialize();

  $.ajax({
    type: "POST",
    url: "wp-admin/admin-ajax.php?action=search",
    data: form,
    success: function (data) {
      console.log(\'Submission was successful.\');
      console.log(data);
      console.log(window.location.href);
      //window.location.href = \'?page_id=7=\' + data;
    },
    error: function (data) {
      console.log(\'An error occurred.\');
      console.log(data);
    },
  });
});
我在PHP文件中的搜索函数,我想从这里重定向:

   add_action("wp_ajax_search", "search");

   function search() {
      $name = $_POST[\'name\'];

      $mydb = new wpdb(\'root\',\'\',\'i3264185_wp1\',\'localhost\');
      $query = "SELECT event_name FROM event WHERE event_name LIKE \'$name%\'";
      $result = $mydb->get_results($query);

      $result = json_encode($result);
      wp_redirect( home_url(\'/?page_id=7\') ); 
      exit;
      echo $result;
      die();
   }

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

不能。如果希望通过PHP重定向用户,则应设置响应头。如果您输出任何数据,您将无法,并且您将得到Header already sent 错误

请看这一行:

wp_redirect( home_url(\'/?page_id=7\') ); 
exit;

echo $result;
die();
当您使用exit (与die() ), 您正在终止脚本。下一行永远不会执行。因此,我的建议是要么使用AJAX重定向,要么将表单更改为如下所示:

<form action="<?php echo admin_url ( \'admin-ajax.php\' ); ?>">

    <!-- This is to set the action of your query args -->
    <input type="hidden" name="action" value="search"/>

    <!-- Rest of your form here -->

</form>
然后,在exit 还有AJAX脚本,如果您不依赖它来完成一些重要的事情。

结束