单击“提交并刷新页面”后的消息

时间:2014-03-07 09:09:14

标签: php forms

我有一个页面,用户可以编辑他的个人资料。他可以通过单击type = submit按钮确认它,然后保存页面刷新和更改。

我想在页面刷新后用“您的更改已保存”之类的内容提示消息。

我怎么能这样做? :)

7 个答案:

答案 0 :(得分:4)

您可以使用Alan Kael Ball或php中提到的AJAX请求来执行此操作

发现数据成功更新到数据库后(我假设你知道这个porcess)试试这个显示消息

print '<script type="text/javascript">';
print 'window.onload = function(){';
print 'alert("Your changes have been saved")';
print '};';
print '</script>'; 

答案 1 :(得分:1)

使用 AJAX 将结果返回到HTML元素而不刷新页面。

在您希望显示消息的位置添加<div id="response"></div>。在<script></script>

之前的页面末尾添加</body>.元素
<div id="response"><!-- you message will appear here --></div>

<form id="form">
<!-- your form here -->
<input type="submit" class="submit" value="Submit">
</form>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>

 $(document).ready(function() {
      var form = $('#form'); // form (by ID attr)
      var submit = $('.submit');  // submit button (by CLASS attr)
      var alert = $('#response'); // alert div for show alert message (by ID attr) 
      // form submit event
      form.on('submit', function(e) {
        e.preventDefault(); // prevent default form submit

        $.ajax({
          url: 'process_profile.php', // form action url - this is your script where the $_POST is sent. The response will be whatever you return (eg: echo 'Success!'; )
          type: 'POST', // form submit method get/post
          dataType: 'html', // request type html/json/xml
          data: form.serialize(), // serialize form data 
          beforeSend: function() {
            alert.fadeOut();
            submit.html('Processing...'); // change submit button text
          },
          success: function(data) {

            //form.trigger('reset'); // reset form?
            submit.html('Submit'); // reset submit button text
          },
          error: function(e) {
            console.log(e)
          }
        });
      });
    });

</script>

在您的php页面(此处我称之为process_profile.php)中,您将处理所有f $_POST变量,一旦脚本完成,只需echo()一条消息。这将出现在他的回复<div>

答案 2 :(得分:0)

在你的 <form action="yourscript.php" ......

添加参数

<form action="yourscript.php?msg=1" ........

然后在页面的某个位置刷新

<?php echo ($_GET['msg']==1)?"Your changes are saved!":"";?>

当然这只是一个演示,您应该验证是否实际保存了更改,然后显示确认消息。

答案 3 :(得分:0)

在成功时重定向用户时添加参数,例如index.php?success=1

在你的代码中添加:

if(isset($_GET['success'])) {
    "Your changes have been saved";
}

或者您可以使用专用库: https://github.com/plasticbrain/PHP-Flash-Messages

答案 4 :(得分:0)

假设您有一个标准的HTML表单,使用POST发送要保存的数据,最好在提交信息后重定向。这可以防止在某些浏览器中出现警告,提示用户在使用后退按钮或刷新页面时重新提交信息。

这个过程是这样的:

  1. 用户提交表单
  2. PHP脚本检查表单是否存在错误并执行任何必要的操作。
  3. 在会话中存储成功或错误消息
  4. 重定向到成功页面(可以是同一页面)
  5. 从会话加载消息并显示给用户 - 清除会话。
  6. 代码是这样的:

    <?php
    session_start();
    
    $message = '';
    //load a message from the session if there is one
    //clear the session so the message doesn't appear again.
    if ( isset($_SESSION['FLASH']) {
      $message = $_SESSION['FLASH'];
      unset($_SESSION['FLASH']);
    }
    
    if ( isset($_POST['save']) ) {
       $email = $_POST['email'];
       // code to save or whatever...
    
       $_SESSION['FLASH'] = 'Your email has been saved.';
       header('location: /'); //path to your success script
       exit;
    }
    
    ?>
    <html>
      <head>
        <title>Test Page</title>
      </head>
      <body>
    
        <?php if ( $message != '' ) { ?>
        <p class="message"><?php echo $message; ?></p>
        <?php } ?>
    
        <form action="" method="post">
          <label for="email">Email</label>
          <input type="text" name="email" id="email" />
    
          <input type="submit" name="save" value="Save" />
        </form>
      </body>
    </html>
    

答案 5 :(得分:-1)

您需要在保存配置文件重定向到新页面后在该页面上创建新页面,然后写下脚本

<script type="text/javascript">
    $(document).ready(function(){
       prompt('Your changes have been saved');
    });
</script>

由于

答案 6 :(得分:-2)

<input type='submit' name='submit' value='Save' onClick='alert("Your changes have been saved");'>

请让我知道这对您有何影响!