表单未将数据保存到MySQL数据库


Form not saving data to MySQL database

我在将此表单中的单个数据(deckName)记录到MySQL数据库时遇到问题。我阅读并尝试了我在网上找到的所有解决方案,但我无法使其发挥作用。从PHPMyAdmin执行MySQL命令可以很好地工作。

我需要将这些值保存在数据库的deck表中(id、name、cards)。

Jquery/Ajax脚本:

<script>
    $(document).ready(function(){     
        $(document).on('submit','.save',function(){
            var deckName = $('.deck').val();
            console.log(deckName);
            $.ajax({
                type: "POST",
                url: "submit.php",
                data: { "name": deckName},
                success: console.log('worked')
            });
        });
    }); 
</script>

形式:

<div class="decklist">
    <form method="post" id="decklist">
    <input class="deck" id="deckN" type="text" value="Deck name"/>
    <input class="save" type="submit" value="Save Deck"/>
    </form>
    <div class="list">
        <ul class="d_list">
            <li class='added_card' id='list_0'></li>
        </ul>
    </div>
</div>

submit.php:

<?php

if(isset($_POST["name"])&& strlen($_POST["name"])>0){
    $deckName = $_POST["name"];
    $cards = 0;
    echo $deckName;
    $conn = new mysqli("localhost:8080","root","","ken");
    if($conn -> connect_errno){
        die("Failed to connect: (". $conn->connect_errno. ")".$conn->connect_error);
    }
    $insert = $conn->query ("INSERT INTO `deck` (deck, cards) VALUES ($deckName, $cards)");
    if ($insert){
        echo 'Successfully saved '. $deckName;
        $conn -> close();
    }
}
?>

同样,当我点击SaveDeck进行提交时,div会被刷新,而我认为它不应该使用ajax。

我尝试使用click而不是submit,console.log从ajax函数中正确地返回了所有内容,并且div并不是每次都刷新,但submit日志不再显示在控制台中。我从来没有从submit.php中的echo中得到任何东西。

试着像一样使用preventDefault;

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

希望它能解决你的问题!

您必须在字符串值周围加引号:

"INSERT INTO `deck` (deck, cards) VALUES ('$deckName', $cards)"

把js改成这样怎么样:

$(".decklist").on("click", ".save", function(){
    $.post("submit.php", { name: deckName }).success(function(){
        console.log('worked');
    });
});

您需要绑定form提交事件:

$(document).ready(function(){    
        $("#decklist").on('submit',function(e){
            e.preventDefault(); 
            var deckName = $('.deck').val();
            console.log(deckName);
            $.ajax({
                type: "POST",
                url: "submit.php",
                data: { "name": deckName},
                success: function(response) { 
                      console.log('worked')
                }
            });
        });
    }); 

$(document).ready(function(){

    $("#decklist").on('submit',function(e){
        e.preventDefault(); 
        var deckName = $('#deck').val();
        console.log(deckName);
        $.ajax({
            type: "POST",
            url: "submit.php",
            data: { "name": deckName},
            success: function(response) { 
                  console.log('worked')
            }
        });
    });
}); 

它对我有效,更改$('#deck').val();