每当按下提交按钮时,如何停止页面重新加载?

时间:2016-05-08 10:55:28

标签: php html forms

我目前正在尝试创建一个系统,我的网站用户可以在其中投票/投票。从本质上讲,我的方法是使用以下html

<form method='post'>
<input type='submit' name='up' value='up'>
<input type='submit' name='down' value='down'>
</form>

结合这个php:

<?php

if( isset($_POST['up']) ){

  $con = mysqli_connect("localhost","user","password");

  if (!$con)
  {
    die('Could not connect: ' . mysqli_connect_error());
  }

  $postid = "";
  $userid = $_SERVER['REMOTE_ADDR'];


  $query = "
  INSERT INTO database.table (postid, ipaddress, vote) VALUES ('$postid', '$userid', '+1')";

  mysqli_query($con, $query);

  mysqli_close($con);

  }

elseif( isset($_POST['down']) ){


  $con = mysqli_connect("localhost","user","password");

  if (!$con)
  {
    die('Could not connect: ' . mysqli_connect_error());
  }


  $postid = "";
  $userid = $_SERVER['REMOTE_ADDR'];


  $query = "
  INSERT INTO database.table (postid, ipaddress, vote) VALUES ('$postid', '$userid', '-1')";
  mysqli_query($con, $query);

  mysqli_close($con);
}

?>

这在某种程度上有效。正如我所希望的那样,它会跟踪当前的投票数量。我想解决的问题是,每次按下向上/向下按钮 - 页面都会重新加载。如何防止这种情况发生,并使这个过程更加流畅?

提前感谢任何输入。

1 个答案:

答案 0 :(得分:4)

我意识到你在问题的任何地方都没有提到jQuery,但是由于你无法用纯HTML + PHP做你想做的事情,我认为你迟早会求助于JS来实现这个效果。 jQuery非常适合这种情况:

HTML部分

<a class="voter" data-vote="up">Vote up</a>
<a class="voter" data-vote="down">Vote down</a>

jQuery部分JSFiddle

$(function(){

  $('.voter').click(function(e){
    e.preventDefault(); // prevent page reload
    var voteType = $(this).data('vote');
    $.post('/echo/json/', {
        voteType: voteType
    }, function(){
        alert('You have voted');
    });
  });

});

PHP部分

$voteType = $_POST['voteType'];

switch($voteType){
    case 'up':
    // Do something
        break;
    case 'down':
    // Do something else
        break;
}