【问题标题】:Form Submit stop refresh表单提交停止刷新
【发布时间】:2016-04-30 05:10:22
【问题描述】:

好的,所以这是一个使用 ajax 导航加载的页面,该页面可以很好地自行加载,我正在尝试使其在提交页面时不会刷新整个页面。我环顾了一段时间,仍然找不到解决方法。

<head>
  <script>
    $(document).on('submit', '#changePassword', function() {
      $("#content").load("core.home");

      return false;

    });
  </script>
</head>
<?php if( !preg_match( "/index.php/i", $_SERVER[ 'PHP_SELF'] ) ) { die(); } ?>

<form action="" method="post" id="changePassword">
  <div class="box">
    <div class="boxhead purple purple">
      <strong>Change password</strong>
    </div>
    <?php if( $_POST[ 'submit'] ) { try { $oldpassword=$ core->clean( $_POST['current_password'] ); $oldpassword_enc = $core->encrypt( $oldpassword ); $newpassword = $core->clean( $_POST['new_password'] ); $newpassword_enc = $core->encrypt( $newpassword ); if( !$oldpassword or !$newpassword) { throw new Exception(
    "All fields are required." ); } elseif( $oldpassword_enc != $user->data['password'] ) { throw new Exception( "The password you entered does not match the one we have on record." ); } else { $db->query( "UPDATE users SET password = '{$newpassword_enc}'
    WHERE id = '{$user->data['id']}'" ); echo "
    <div class=\ "square good\">"; echo "<strong>Success</strong>"; echo "
      <br />"; echo "Password successfully changed!"; echo "</div>"; $db->query( "INSERT INTO logs VALUES (NULL, 'Changed Password <font color=\ "51c833\"><b>Success</b></font>', NULL, '<b>{$user->data['fullUsername']}</b> ({$_SERVER['REMOTE_ADDR']})', '3') "
    ); } } catch( Exception $e ) { echo "
    <div class=\ "square bad\">"; echo "<strong>Error</strong>"; echo "
      <br />"; echo $e->getMessage(); echo "</div>"; $db->query( "INSERT INTO logs VALUES (NULL, 'Changed Password <font color=\ "FF0000\"><b>Fail</b></font> Reason: {$e->getMessage()}', NULL, '<b>{$user->data['fullUsername']}</b> ({$_SERVER['REMOTE_ADDR']})',
    '3') " ); } } ?>

    <table width="100%" cellpadding="3" cellspacing="0">
      <?php echo $core->buildField( "password", "required", "current_password", "Current password" ); echo $core->buildField( "password", "required", "new_password", "New password"); ?>
    </table>
  </div>

  <div class="box" align="right">
    <button class="button" type="submit" name="submit" value="Submit" id="button">Submit</button>
  </div>
</form>

<?php echo $core->buildFormJS('changePassword'); ?>

【问题讨论】:

  • 你到底想做什么?详细解释一下。
  • 这里的代码是一个单独的文件,当提交表单时它会加载到一个 ajax 框中,它将整个站点刷新回 index.php 我不希望发生站点范围的刷新跨度>

标签: php html ajax forms submit


【解决方案1】:

您需要使用e.preventDefault 来停止提交按钮的默认行为(即在提交时重新加载)

$(document).on('submit', '#changePassword', function(e)
 {  
  e.preventDefault();

 });

【讨论】:

  • 所以我已经将页面顶部的脚本更改为这个,但它仍然会完全重新加载页面
  • 你能在 jsfiddle 上提供你的代码或你网站的 url 吗?您应该将其包装在 $( document ).ready(function() { // Your code here });
猜你喜欢
  • 2015-05-04
  • 1970-01-01
  • 2015-08-30
  • 2014-04-20
  • 2013-10-27
  • 1970-01-01
相关资源
最近更新 更多