Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将表单提交到php脚本并返回_Javascript_Php_Jquery_Html_Contact Form - Fatal编程技术网

Javascript 将表单提交到php脚本并返回

Javascript 将表单提交到php脚本并返回,javascript,php,jquery,html,contact-form,Javascript,Php,Jquery,Html,Contact Form,我有一个联系人表单,它最初调用一个javascript函数来验证内容。如果此函数返回true,则将数据发布到php文件 在本文件末尾,我想返回到联系人页面,目前我正在使用: header('Location: ' . $_SERVER['HTTP_REFERER']); 有更好的办法吗 我还想更改联系人页面上某个元素的css,以便在我返回时显示(一条感谢消息),这可能吗?我可以在初始javascript函数中使用jQuery将其设置为显示,但当它转到php文件时,它就会消失 谢谢让表单将数据提

我有一个联系人表单,它最初调用一个javascript函数来验证内容。如果此函数返回true,则将数据发布到php文件

在本文件末尾,我想返回到联系人页面,目前我正在使用:

header('Location: ' . $_SERVER['HTTP_REFERER']);
有更好的办法吗

我还想更改联系人页面上某个元素的css,以便在我返回时显示(一条感谢消息),这可能吗?我可以在初始javascript函数中使用jQuery将其设置为显示,但当它转到php文件时,它就会消失


谢谢

让表单将数据提交到联系人表单的同一页。
然后从PHP脚本检查表单是否已提交,执行处理代码并返回一个div和感谢信息。

使表单将数据提交到联系人表单的同一页。
然后从PHP脚本检查表单是否已提交,执行处理代码并返回一个div和感谢信息。

说联系人页面的名称是
index.PHP
。您可以使用正确的操作设置表单(尽管默认情况下应该是这样),然后在标题中签入提交参数。代码如下

<?php
  if (array_key_exists("submit_btn",$_REQUEST) {
    //display a thank you
  }
?>

<!-- more code here-->

<form action="index.php">
  <input name="whatever" type="text">
  <input type="submit" name="submit_btn">
</form>

说你的联系人页面名是
index.php
。您可以使用正确的操作设置表单(尽管默认情况下应该是这样),然后在标题中签入提交参数。代码如下

<?php
  if (array_key_exists("submit_btn",$_REQUEST) {
    //display a thank you
  }
?>

<!-- more code here-->

<form action="index.php">
  <input name="whatever" type="text">
  <input type="submit" name="submit_btn">
</form>

Post to self然后您可以将Post之后的if语句处理为重定向。
您是否像您所说的那样使用标题重定向

所以,把它贴到你表单的动作部分

<form action="yourpage.php">

Post to self然后您可以将Post之后的if语句处理为重定向。 您是否像您所说的那样使用标题重定向

所以,把它贴到你表单的动作部分

<form action="yourpage.php">

HTTP_REFERER不是在PHP中实现历史记录-1的最佳解决方案

如合同所述:

将用户代理引用到当前页面的页面(如果有)的地址。这是由用户代理设置的。并非所有的用户代理都会设置此功能,有些代理还提供了修改HTTP_REFERER的功能。简而言之,它确实不可信

最好的解决方案是在header函数中显式写入要返回的页面

对于第二个问题,可以使用查询参数重定向:

header('Location: script.php?valid=1');
然后在您的视图中进行测试:

if (isset($_GET['valid']) && $_GET['valid'] == '1') {
     // display the message
}

HTTP_REFERER不是在PHP中实现历史记录-1的最佳解决方案

如合同所述:

将用户代理引用到当前页面的页面(如果有)的地址。这是由用户代理设置的。并非所有的用户代理都会设置此功能,有些代理还提供了修改HTTP_REFERER的功能。简而言之,它确实不可信

最好的解决方案是在header函数中显式写入要返回的页面

对于第二个问题,可以使用查询参数重定向:

header('Location: script.php?valid=1');
然后在您的视图中进行测试:

if (isset($_GET['valid']) && $_GET['valid'] == '1') {
     // display the message
}

多亏了不同的人的回答,我终于找到了一些方法。谢谢大家

最简单的方法是使用以下标题重新指向联系人感谢页面:

header("Location: http://{$_SERVER['SERVER_NAME']}/contact-thankyou.html");
我改为使用服务器名,因为HTTP\U REFERER不是一个很好的解决方案

第二种解决方案,虽然有点难看,但确实起到了作用,就是返回到相同的页面,标题如下:

header("Location: http://{$_SERVER['SERVER_NAME']}/contact.html?submitted");
然后使用以下Javascript检测查询参数并更改css:

if (window.location.search.substring(1) == "submitted")
        {
            $("#message-sent").css({"display": "block"});
        }
这不是一个很好的解决方案,因为我更喜欢使用php获取查询参数,但我只能在带有模板系统的页面上使用html和Javascript


谢谢大家。

多亏了大家的回答,我终于找到了一些方法。谢谢大家

最简单的方法是使用以下标题重新指向联系人感谢页面:

header("Location: http://{$_SERVER['SERVER_NAME']}/contact-thankyou.html");
我改为使用服务器名,因为HTTP\U REFERER不是一个很好的解决方案

第二种解决方案,虽然有点难看,但确实起到了作用,就是返回到相同的页面,标题如下:

header("Location: http://{$_SERVER['SERVER_NAME']}/contact.html?submitted");
然后使用以下Javascript检测查询参数并更改css:

if (window.location.search.substring(1) == "submitted")
        {
            $("#message-sent").css({"display": "block"});
        }
这不是一个很好的解决方案,因为我更喜欢使用php获取查询参数,但我只能在带有模板系统的页面上使用html和Javascript


谢谢大家。

Javascript运行客户端,PHP运行服务器端。当您使用位置标记时,它会将您发送到一个新的PHP页面,实际上是重新加载联系人页面。这意味着在清除第一次页面加载后执行的任何客户端脚本,您将返回到原始页面加载状态。谢谢。我明白这一点,这就是为什么我希望有更好的方法来做到这一点。有什么想法吗?看看下面忍者马特的解决方案。他建议您每次都将表单提交给PHP,然后当您在PHP脚本中时,您可以验证并显示感谢,或者验证失败并显示错误信息,这样您就可以避免混乱的客户端处理问题。Javascript运行客户端,PHP运行服务器端。当您使用位置标记时,它会将您发送到一个新的PHP页面,实际上是重新加载联系人页面。这意味着在清除第一次页面加载后执行的任何客户端脚本,您将返回到原始页面加载状态。谢谢。我明白这一点,这就是为什么我希望有更好的方法来做到这一点。有什么想法吗?看看下面忍者马特的解决方案。他建议您每次都将表单提交给PHP,然后当您在PHP脚本中时,您可以验证并显示感谢,或者验证失败并显示错误信息,这样您就可以避免混乱的客户端处理问题。这种方法的优点是,您可以将Javascript验证移到c