我正在尝试使用下拉列表更新数据库而不使用提交按钮。
这是我的下拉:
<td>
<label for=""></label>
<select style="font-family: Questrial;" name="status" required>
<option disabled selected hidden>Select Status</option>
<option value="In Progress">In Progress</option>
<option value="Closed: Cancelled">Closed: Cancelled</option>
<option value="Closed: Solved">Closed: Solved</option>
</select>
</td>
这是脚本:
<script>
$(document).ready(function() {
$('option[name="status"]').click(function() {
var status = $(this).val();
$.ajax({
url: "update2.php",
method: "POST",
data: {
status: status
},
success: function(data) {
$('#result').html(data);
}
});
});
});
</script>
和以下是update2.php:
<?php
//Insert Data
$hostname = "localhost";
$username = "root";
$password = "";
$databasename = "companydb";
try
{
$conn = new PDO("mysql:host=$hostname;dbname=$databasename",$username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($_POST["status"]))
{
$query = "INSERT INTO tickets(status) VALUES (:status)";
$statement = $conn->prepare($query);
$statement->execute(
array('status' => $_POST["status"])
);
$count = $statement->rowCount();
if($count > 0)
{
echo "Data Inserted Successfully..!";
}
else
{
echo "Data Insertion Failed";
}
}
}
catch(PDOException $error)
{
echo $error->getMessage();
}
?>
基本上我想发生的事情是在我从下拉列表中进行选择时更新表值。
目前,当我做出选择时,什么也不会发生。(没有页面重新加载,没有错误消息,什么都没有(
我在这里做错了吗?
这也是我的表格架:
表模式
您的目标是错误的元素 $('option[name="status"]')
应该是$('select[name="status"] option'
我建议您使用ID,它们更清晰,更快。
此外,您还将对变更事件感兴趣
https://api.jquery.com/change/
选择器应为 select
,事件应为 change()
。尝试以下操作:
$('select[name="status"]').change(function() {
而不是:
$('option[name="status"]').click(function() {
1(将 $('option[name="status"]').click(
更改为 $('select[name="status"]').change(
名称"状态"是选择的属性,而不是选项的属性。
2(确保您的元素具有ID"结果",否则AJAX成功处理程序将不会在任何地方插入接收到的数据/字符串。
这些更改应该使您的代码正常工作。
我建议在每个Ajax调用您的电话中添加一个错误处理程序。还要尝试防止Ajax方法调用的PHP文件,以使其没有返回/回声的情况。
if(isset($_POST["status"]))
{
$query = "INSERT INTO tickets(status) VALUES (:status)";
$statement = $conn->prepare($query);
$statement->execute(array('status' => $_POST["status"]));
$count = $statement->rowCount();
if($count > 0)
{
echo "Data Inserted Successfully..!";
}
else
{
echo "Data Insertion Failed";
}
}
// ! add else statement
else
{
echo "unknown index: 'status'";
}
还有趣的阅读有关AJAX错误处理:设置php