Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.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
Can';提交表单后,不要去掉空白的php页面_Php_Html_Twitter Bootstrap - Fatal编程技术网

Can';提交表单后,不要去掉空白的php页面

Can';提交表单后,不要去掉空白的php页面,php,html,twitter-bootstrap,Php,Html,Twitter Bootstrap,我们花了几个小时来寻找答案,但我已经筋疲力尽,脑子都僵住了 成功提交后,使用引导模式订阅php表单。一切正常,电子邮件通过,一秒钟或更少的空白页面出现后模式显示 我猜是在form.php文件是一个单独的文件之前加载的,但有没有办法停止加载空白页面 下面是Html代码 发送 清楚的 非常感谢。 感谢您的注册,我们已将您添加到等待名单中! 接近 您试图实现的目标似乎与您实际编写的目标不同 让我们看看您的HTML表单。您已经在提交按钮上附加了引导的数据切换和数据目标属性。这意味着,当您单击该按钮

我们花了几个小时来寻找答案,但我已经筋疲力尽,脑子都僵住了

成功提交后,使用引导模式订阅php表单。一切正常,电子邮件通过,一秒钟或更少的空白页面出现后模式显示

我猜是在form.php文件是一个单独的文件之前加载的,但有没有办法停止加载空白页面

下面是Html代码


发送
清楚的
非常感谢。
感谢您的注册,我们已将您添加到等待名单中!

接近
您试图实现的目标似乎与您实际编写的目标不同

让我们看看您的HTML表单。您已经在提交按钮上附加了引导的
数据切换
数据目标
属性。这意味着,当您单击该按钮时,它将打开模式并提交表单。因此,用户将简要地看到一个模式,并看到页面重定向到您的PHP文件。(这就是为什么会出现一个模态。)

接下来,让我们看看您的PHP文件。首先,当您将表单从一个页面提交到另一个页面时,后一个页面不知道前一个页面中的HTML元素。这意味着您的echo'd
标记中的代码实际上不应该工作,因为它正在查找前一页上的HTML元素

现在,问你为什么会有空白页?好。。。一切正常,因此您的代码echo是一个
标记,没有可视指示器。但是就像我刚才说的,你在
里面的东西不起作用——所以什么都不显示,什么也不发生

因此,当您单击按钮时,重述事件的顺序:模式显示,表单提交,表单重定向到另一个页面,而另一个页面回显什么都没有

以下是我认为您试图实现的目标的一个糟糕/快速的解决方案:

  • 将HTML文件更改为PHP文件

  • 从按钮上删除
    数据切换
    数据目标
    属性,这样当您单击按钮时,它不会打开模式右侧

    <form action="form.php" method="post">
        <div class="form-group label-floating">
            <input name="email" class="control-label form-control text-center" type="text" placeholder="Enter your email address ...">
            <button type="submit" class="btn btn-primary">Send</button>
        </div>
    </form>
    
  • 在PHP提交页面中删除echo的
    脚本
    标记行代码。相反,添加一段代码,使其重定向回PHP表单页面。关键部分是,您将在URL的末尾附加一个
    ?success=true

    $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); // valid email or null|false
    
    if ($email) { 
        $to = "test@test.com";
        $from = "no-reply@test.com";
        $headers = "From: " . $from . "\r\n";
        $subject = "New Beta Subscription";
        $body = "New user interested in beta program: " . $email;
    
        if (mail($to, $subject, $body, $headers, "-f " . $from)) {
            header('Location: subscribe.php?success=true'); // replace `subscribe.php` with PHP form page
            exit;
        } 
        echo 'There was a problem with your e-mail (' . $email . ')';   
    } else {
       echo 'There was a problem with your e-mail'; // no point in printing $email if it is null   
    }
    
  • 基本上,传递
    ?success=true
    是为了告诉PHP表单页面打开模式时一切顺利(3)

    应该是这样


    更好的方法是学习和使用AJAX。

    我认为最好使用php
    json_encode
    并在前端使用
    AJAX
    。感谢您的详细解释和逐步指导。由于某种原因,我们无法使它工作。。。现在我得到的是内部服务器错误,而不是空白页,但提交的电子邮件仍在传递…可能是
    位置:
    字符串,我忘了在
    header()
    函数中包含该字符串。好的,空白页不再显示:)只是模态也不再显示。似乎页面在提交后被刷新,电子邮件仍在传递。假设您遵循引导,您应该在
    正文
    标记的末尾包含jQuery和引导JavaScript文件。这意味着,如果您想要添加依赖于这两个脚本的任何JavaScript代码,则必须将代码放在它们之后。因此,请确保(3.)放在包含引导文件之后。我还将在(3.)的
    文档中放入
    警报('it fired')
    ,以查看代码是否进入该函数。如果是这样的话,那么这只是显示模态的问题。非常感谢!成功了!只需将脚本更新到新版本,并在链接文件之后添加脚本!
    $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); // valid email or null|false
    
    if ($email) { 
        $to = "test@test.com";
        $from = "no-reply@test.com";
        $headers = "From: " . $from . "\r\n";
        $subject = "New Beta Subscription";
        $body = "New user interested in beta program: " . $email;
    
        if (mail($to, $subject, $body, $headers, "-f " . $from)) {
            header('Location: subscribe.php?success=true'); // replace `subscribe.php` with PHP form page
            exit;
        } 
        echo 'There was a problem with your e-mail (' . $email . ')';   
    } else {
       echo 'There was a problem with your e-mail'; // no point in printing $email if it is null   
    }