2016-01-09 2 views
0

У меня есть файл, который при вызове должен перенаправляться в другое место. Чтобы убедиться, что ничего не отправлено перед заголовком, я вызываю файл, единственным содержимым которого является заголовок. Я также пытался перенаправить другие методы, но ничего не работает. Вот код:перенаправление с php не работает

первый есть 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"); 
?> 

Я использую поджигатель для см. ответ. Он дает статус 200 (запрос выполнен). POST дает правильный параметр, который я отправил. Ответ дает страницу, на которую я пытаюсь перенаправить. Но перенаправления не произойдет.

Я уменьшил код до этой точки, чтобы устранить все, что может вызвать проблемы. Я знаю, что вы можете задаться вопросом, зачем мне писать код, который, кажется, ничего не делает. Но если это не сработает, я сомневаюсь, что у меня возникла проблема с множеством других вызовов. Кроме того, я намеревался использовать заголовок для перенаправления, но попробовал другие варианты из отчаяния.

+0

Put exit(); сразу после заголовка («location:/edit_document»); –

ответ

0

Попробуйте сделать запрос AJAX для получения перенаправления URL, а затем использовать его для редиректа:

$.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"; 
?> 
+0

Я думал об этом. Единственная проблема заключается в том, что если я это сделаю, отправленный идентификатор будет потерян во время перенаправления. Мне нужна эта страница (file1.php), чтобы получить ее. –

+0

@amygrimaldi file1.php получает этот идентификатор, а затем может возвращать URL для перенаправления на основе этого идентификатора. –

0

Использование Javascript или Jquery Перенаправление ... // Поведение Как HTTP-перенаправление window.location.replace ("http://stackoverflow.com");

// Поведение Как нажимать на ссылку window.location.href = "http://stackoverflow.com";

0

Люди хотят использовать AJAX, чтобы страница не перенаправлялась при отправке формы. Странно, что вы хотите наоборот, но используете AJAX. Почему бы вам просто не создать простую форму, подобную этой, и отправить форму, когда вам нужно перенаправить.

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

И просто заменить код Аякса ($.ajax({...});) с этим.

document.myForm.submit(); 

Если форма имеет id="myForm" вместо name="myForm", это даст тот же результат:

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

И если вы хотите изменить идентификатор динамически из JS, вы можете сделать это следующим образом (введите код до submit()):

document.myForm.id.value = 20; 
+0

В этой конкретной задаче, которую я пытаюсь выполнить, использование формы не является вариантом. Я использовал формы в одном проекте для других вещей. Но данные здесь взяты из таблицы. –

+0

Смотрите нижнюю часть моего ответа, вы можете получить данные из своей таблицы и установить на вход, и вы можете сохранить форму скрытой, поскольку поле ввода скрыто, оно не будет отображаться как форма на странице. –

Смежные вопросы