使用下拉列表更新表值,而无需使用提交按钮



我正在尝试使用下拉列表更新数据库而不使用提交按钮。

这是我的下拉:

<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

中的响应代码

最新更新