当使用javascript调用Php函数时,Php$\u POST返回空

当使用javascript调用Php函数时,Php$\u POST返回空,javascript,php,forms,post,Javascript,Php,Forms,Post,我还在学习php和java脚本。 我正在创建一个简单的联系人表单,并使用$\u Server[php\u self]将表单操作设置为同一页面 我想做的是,当有人提交到我的表单时,它将显示一条消息,其中包括在同一页面上提交的名称。将联系人表单替换为消息 我还尝试将操作指向另一个php页面。但它仍然不起作用。 Javascript是这样工作的吗?或者我必须使用不同的代码或语言来实现这一点 这是我的密码 我的亵渎 名称: 编号: 电子邮件: 这里有几个不同的问题 首先是对PHP和JS运行的时间

我还在学习php和java脚本。 我正在创建一个简单的联系人表单,并使用$\u Server[php\u self]将表单操作设置为同一页面

我想做的是,当有人提交到我的表单时,它将显示一条消息,其中包括在同一页面上提交的名称。将联系人表单替换为消息

我还尝试将操作指向另一个php页面。但它仍然不起作用。 Javascript是这样工作的吗?或者我必须使用不同的代码或语言来实现这一点

这是我的密码


我的亵渎
名称:

编号:

电子邮件:

这里有几个不同的问题

首先是对PHP和JS运行的时间缺乏了解

第二个问题是,当加载新页面时,DOM更改将丢失

这就是正在发生的事情:

  • 浏览器请求该页面
  • PHP运行(
    $\u POST
    没有
    名称
    键)
  • 浏览器获取页面
  • 单击“提交”按钮
  • JavaScript运行,并设置
    innerHTML
    (请记住,PHP在第2步返回)
  • 表单提交导致浏览器导航到新页面
  • PHP再次运行
  • 浏览器将获取新页面…对上一页所做的DOM更改将丢失

  • 进一步阅读:。

    这里有几个不同的问题

    首先是对PHP和JS运行的时间缺乏了解

    第二个问题是,当加载新页面时,DOM更改将丢失

    这就是正在发生的事情:

  • 浏览器请求该页面
  • PHP运行(
    $\u POST
    没有
    名称
    键)
  • 浏览器获取页面
  • 单击“提交”按钮
  • JavaScript运行,并设置
    innerHTML
    (请记住,PHP在第2步返回)
  • 表单提交导致浏览器导航到新页面
  • PHP再次运行
  • 浏览器将获取新页面…对上一页所做的DOM更改将丢失

  • 进一步阅读:。

    我愿意在评论中听到更好的方法,因为这是我脑子里想不到的,我知道有更好的解决方案。。。但在你的情况下,我会这么做:

    <!DOCTYPE html>
    <html>
    <head>
        <title> My profle</title>
        <meta name="robots" content="noindex">
        <link rel="stylesheet" type="text/css" href="style.css">
    
    </head>
    <body>
    <div class="contact">
       <form class="form" class="contact" id="contact-form" action="" method="POST">
               <?php 
                   if(isset($_POST)){
                       //process data however (I'm assuming) you need to - even if just posting to another script at this point...
                       echo 'Thank you '.$_POST['name'].' ! Your message has been submitted';
                   }
                   else{
                        echo 'Name: <br>
                        <input type="text" class="field" name="name"><br>
                        Number:<br>
                        <input type="text" class="field" name="number"><br>
                        Email:<br>
                        <input type="email" class="field" name="email"><br>
                        <br>
                        <input type="submit" class="submit" name="submit" value="submit">';
                   }
               ?>
           </form>
    </div>
    </body>
    </html>
    
    
    我的亵渎
    
    我很乐意在评论中听到更好的方法,因为这是我的想法,我知道有更好的解决方案。。。但在你的情况下,我会这么做:

    <!DOCTYPE html>
    <html>
    <head>
        <title> My profle</title>
        <meta name="robots" content="noindex">
        <link rel="stylesheet" type="text/css" href="style.css">
    
    </head>
    <body>
    <div class="contact">
       <form class="form" class="contact" id="contact-form" action="" method="POST">
               <?php 
                   if(isset($_POST)){
                       //process data however (I'm assuming) you need to - even if just posting to another script at this point...
                       echo 'Thank you '.$_POST['name'].' ! Your message has been submitted';
                   }
                   else{
                        echo 'Name: <br>
                        <input type="text" class="field" name="name"><br>
                        Number:<br>
                        <input type="text" class="field" name="number"><br>
                        Email:<br>
                        <input type="email" class="field" name="email"><br>
                        <br>
                        <input type="submit" class="submit" name="submit" value="submit">';
                   }
               ?>
           </form>
    </div>
    </body>
    </html>
    
    
    我的亵渎
    
    另外,javascript成功返回thankyou()函数,但$name丢失/您可以通过这种方式混合使用js/php。问题是,提交表单之前尚未设置$\u POST。第二次提交表单时,应显示该表单的名称。这无法正常工作,您必须使用js获取感谢消息的名称,然后提交表单以在phpSorry中处理,错误理解注释p.S。javascript成功返回thankyou()函数,但$name丢失/您可以通过这种方式混合使用js/php。问题是,提交表单之前尚未设置$\u POST。第二次提交表单时,应显示该表单的名称。这并不是你想要的,你必须使用js获取感谢消息的名称,然后提交表单以在phpSorry中处理,错误理解注释+1,以便以信息丰富的方式回答,这仍然会导致一些研究,而不是复制和粘贴代码。试图让我的答案更像这样…+1,以一种信息丰富的方式回答,这仍然会导致一些研究,而不是复制和粘贴代码。试着让我的答案更像这样…谢谢,我还需要更多的学习,我会看看如何组合和正确计时。无论如何,这是我一直在做的演示。np,认为看到一些正确考虑语言处理顺序的代码可能会有所帮助-尽管我希望获得更多的社区意见-我知道同时使用php和html有很多最佳实践,有些人不同意什么是真正的最佳实践。谢谢,我还需要进一步研究,我将看一看如何正确组合和计时。无论如何,这是我一直在做的演示。np认为看到一些正确考虑语言处理顺序的代码可能会有所帮助——尽管我希望得到更多的社区意见——我知道同时使用php和html有很多最佳实践,有些人对什么是实际最佳实践存在分歧。