使用ajax从php发送数据到mysql,无需重新加载或重新加载

时间:2018-04-10 11:26:23

标签: php mysql ajax forms

我还没找到任何东西 我发现的只是带有文本字段的表单。

我的问题是: 我有2个按钮调用后端PHP代码(Setvote.php)。

$ipid = $row['ipid'];
$confirmed = 0;
$fake = 0;
if (isset($_POST['confirmedVote'])) {
    $confirmed = 1;
} else if (isset($_POST['fakeVote'])) {
    $fake = 1;
} else {

}

if ($confirmed + $fake == 1){
 $sqlInsert = 'INSERT INTO database (postid, ipid, confirmed, fake) values 
   ('.$id.', '.$ipid.', '.$confirmed.', '.$fake.')';
   $dbInsert = mysqli_Query($connection, $sqlInsert);
}

这是index.php的形式

       //FORM
    if ($countIpVoted == 0) {
        echo '<br>'.'<form name="myform" action="setvote.php" method="POST" >';
        echo '<input type="hidden" name="postId" value="'.$postid.'" />';
        echo '<button class="votetrue" type="submit" name="confirmedVote" id="trues"><i class="fa fa-check" aria-hidden="true"></i> True</button>';
        echo '<button class="votefalse" type="submit" name="fakeVote" id="falses"><i class="fa fa-times" aria-hidden="true"></i> False</button>';
        echo'</form>';
    }
    else {
        echo '<p style="padding-top:6px; padding-bottom:6px;">You have already voted this post.</p>';
        $rowIpVoted = $resultIpVoted->fetch_assoc();

如何在不刷新页面的情况下将数据发送到mysql? 我试过这样的事情:

<script>
    $(function () {

        $('form').on('submit', function (e) {

            e.preventDefault();

            $.ajax({
                type: 'post',
                url: 'setvote.php',
                data: $('form').serialize(),
                success: function () {

                }
            });

        });

    });
</script>

3 个答案:

答案 0 :(得分:0)

试试这个,

$.ajax({
                url: "setvote.php ",
                type: "POST",
                data:  new FormData(this),
                contentType: false,
                processData:false,
                success: function(data)
                { }
});

还有, 表单标记中的action=""

答案 1 :(得分:0)

试试吧。可能它适用于您的代码。 $(function(){

    $('.votetrue,.votefalse').on('click', function (e) {
        var fd = new FormData();
        fd.append('postId',$('input[name="postId"]').val());
        fd.append($(this).attr('name'),$(this).attr('id'));
        e.preventDefault();
        $.ajax({
            type: 'post',
            url: 'setvote.php',
            data: fd,
            processData: false,
            contentType: false,
            success: function () {

            }
        });

    });

});

答案 2 :(得分:0)

如果你想使用php cose中的数据,那么代码的data中应该是一对key:value有一个错误,所以将数据更改为 data :{serial : $('form').serialize()} 另请提及datatype