重定向与PHP无法正常工作

时间:2016-01-09 09:15:47

标签: php ajax redirect http-headers

我有一个文件,当被调用时,应该重定向到另一个位置。 为了确保在标题之前没有发送任何内容,我调用一个文件,其唯一的内容是标题。我也尝试用其他方法重定向,但似乎没有任何工作。这是代码:

首先有一个ajax调用(成功)将一些数据发送到file1.php

$.ajax({
      url: "file1.php",
      type: "POST",
      data: {id:10},
      success: function(){
      },
      error: function (){
      }
}); 

file1.php获取数据并调用bridge.php

<?
if (isset($_POST['id'])) {
        $selected_id      = $_POST['id'];
}
 require('./code/bridge.php');
?>

文件bridge.php应该重定向到新的url。我试过以下(不是同时) 1。

<script>location.href='https://www.google.al/?gws_rd=cr,ssl&ei=l82QVqyAHIb6O5bJs6gK'</script>

2

<?
 echo '<META HTTP-EQUIV="Refresh" Content="0; URL= https://www.google.al/?gws_rd=cr,ssl&ei=l82QVqyAHIb6O5bJs6gK">'; 
?>

3

<?
  header("location: /edit_document"); 
?>

4

<?
  ob_start();
  header("location: /edit_document");
?>

我正在使用firebug来查看响应。它给出状态200(请求已完成)。 POST提供我发送的正确参数。响应提供我尝试重定向的页面。但重定向不会发生。

我将代码缩减到了这一点,以消除可能导致问题的所有事情。我知道你可能想知道为什么我会写一个似乎什么都不做的代码。但如果它不能像这样工作,我怀疑我可以通过许多其他电话来解决问题。此外,我打算使用标题进行重定向,但在绝望中尝试了其他选项。

3 个答案:

答案 0 :(得分:1)

尝试制作AJAX请求以获取重定向网址,然后将其用于重定向:

$.ajax({
  url: "file1.php",
  type: "POST",
  data: {id:10},
  success: function(url){
    window.location.href = url;
  },
  error: function (){
  }
}); 

bridge.php:

<?php
print "https://www.google.al/?gws_rd=cr,ssl&ei=l82QVqyAHIb6O5bJs6gK";
?>

答案 1 :(得分:0)

使用Javascript或Jquery重定向... //行为与HTTP重定向一样 window.location.replace( “http://stackoverflow.com”);

//行为就像点击链接一样 window.location.href =“http://stackoverflow.com”;

答案 2 :(得分:0)

人们希望使用AJAX,以便在提交表单时页面不会重定向。奇怪的是,你想要相反,但使用AJAX。为什么不创建这样的简单表单,并在需要重定向时提交表单。

<form name="myForm" action="file1.php" method="post">
  <input type="hidden" name="id" value="10" />
</form>

然后用这个替换你的ajax代码($.ajax({...});)。

document.myForm.submit();

如果您的表单有id="myForm"而不是name="myForm",则会提供相同的结果:

document.getElementById("myForm").submit();

如果你想从js动态修改id,你可以这样做(把代码放在submit()之前):

document.myForm.id.value = 20;