2014-01-09 2 views
1

У меня есть базовая форма html с некоторыми входами. Мой файл «form.php», и как только данные отправляются в форму, я хочу сделать всплывающее окно, а затем перенаправить на мою домашнюю страницу. По какой-то причине этого кодаPHP-редирект PHP не работает

<script> 
    document.getElementById("myForm").addEventListener("submit",function(){ 
    alertIt(); 
    return redirect(); 
    },false); 

    function redirect(){ 
     window.location.replace = "index.html" ; 
    } 

    function alertIt(){ 
    alert("Thank you for your feedback!"); 
    } 
</script>  

результатов в рабочем всплывающем окне, но как только появляется всплывающее окно, он принимает меня "/form.php" вместо перенаправляет меня index.html. Любая помощь будет оценена по достоинству.

+0

'window.location.replace'? – Oleg

ответ

1

Почему вы не отправить форму в файл PHP и затем использовать header("Location: index.html"); для перенаправления на индекс?

+0

awesome. это отлично поработало, спасибо! –

0

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

document.getElementById("myForm").addEventListener("submit",function(){ 
    alertIt(); 
    redirect(); 
    return false; 
},false); 

Кроме того, ваша redirect функция не так. window.location.replace - это функция, которую вы должны вызывать, а не свойство, которое вы назначаете; Недвижимость window.location.href.

+0

ах нормально, это имеет смысл. я изменил этот метод, а также window.location.replace, но он по-прежнему перенаправляет меня на form.php .... –

0

Вам нужно сообщить страницу, чтобы отменить действие по умолчанию для формы.

Самый простой способ сделать это с помощью существующего кода - просто вернуть значение false из функции redirect().

function redirect() { 
    return false; 
} 

Лучший подход может быть использование preventDefault() метода, event объекта:

var submitHandler = function (e) { 
    e = e || window.event; 

    e.preventDefault(); 
    e.returnValue = false; //For older browsers 

    alertIt(); 
    redirect(); 

    return false; 
}; 

document.getElementById("myForm").addEventListener("submit", submitHandler, false); 

function redirect(){ 
    window.location.href = "index.html"; 
} 

function alertIt(){ 
    alert("Thank you for your feedback!"); 
} 

Пожалуйста, обратите внимание, что вы просто заменить местоположение окна, не говоря его перенаправить.

window.location.replace = "index.html"; //This sets the new location, but doesn't redirect 

По сравнению с

window.location.href = "index.html"; //This causes the page to redirect immediately. 
+0

В чем причина этого голосования? – crush

+0

-1. Почему 'window.location.replace =" index.html ";'? Он заменяет функцию вместо ее вызова. – Oleg

+0

@Oleg Это не мой код - это код OP ... не для меня -1. – crush