我在将此表单中的单个数据(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();