PHP表单重定向不起作用

时间:2014-01-09 17:24:08

标签: javascript redirect javascript-events

我有一些带有一些输入的基本html表单。我的文件是“form.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。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

为什么不将表单发送到php文件然后使用header("Location: index.html");重定向到索引?

答案 1 :(得分:0)

您必须从事件处理程序返回false以防止事件的默认操作,该操作会提交表单并重新加载结果。

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

此外,您的redirect功能错误。 window.location.replace是您应该调用的函数,而不是您指定的属性;该属性为window.location.href

答案 2 :(得分:0)

您需要告诉页面取消表单的默认操作。

使用现有代码执行此操作的最简单方法是,只需从redirect()函数返回false。

function redirect() {
    return false;
}

更好的方法可能是使用event对象的preventDefault()方法:

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.