获取 ajax 请求以更新 SQL 表中的列
Posted
技术标签:
【中文标题】获取 ajax 请求以更新 SQL 表中的列【英文标题】:Getting an ajax request to update a column in a SQL Table 【发布时间】:2019-02-26 20:18:53 【问题描述】:我正在尝试获取当前代码以从表单中获取 on 或 off 值,并使用对包含 AJAX 请求的 JS 函数的函数调用将其放入 SQL 数据库,然后将其发布到 php 页面运行实际查询。我不确定我做错了什么,而且 API 更令人困惑而不是有用。感谢您的帮助!
当前页面代码:
<?php require('../php/validation.php');?>
<?php require('../php/background.php');?>
<?php
if(isset($_POST['selectonoff']))
$_SESSION['onoff'] = $_POST['selectonoff'];
$query = 'UPDATE onoff SET onoroff = $_POST["selectonoff"] WHERE ID = 1;';
$update = mysqli_query($db, $query);
?>
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>User Settings Dropdown Menu</title>
<link rel="stylesheet" href="../css/settings.css">
<script type="text/javascript">
function load()
document.getElementById("selectonoff").value = '<?php echo $_SESSION['onoff'];?>';
</script>
<script src="jquery.js"></script>
<script>
function rel(id)
jQuery.ajax(
type: "POST",
data: 'id='+id,
url: "../php/update.php",
cache: false,
success: function(response)
alert("Record successfully updated");
);
</script>
</head>
<body onload="load();">
<!-- <div id="wrap"> -->
<br><br><br><br>
<h1>Admin Settings Menu</h1>
<form method="post" action="adminconfig.php">
<p>Toggle BBQ Form</p>
<select id="selectonoff" name="selectonoff" onchange="this.form.submit(); rel();">
<option value="NONE">Select</option>
<option value="ON">Toggle ON</option>
<option value="OFF">Toggle OFF</option>
</select>
</form>
<form action="../index.php">
<input type="submit" value="Home" />
</form>
<script type="text/javascript">
</script>
</body>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src="../js/index.js"></script>
</html>
当前 PHP 代码:
<?php
require ('php/server.php');
$db = mysqli_connect('localhost', 'root', '', 'dedricks');
if(!$db)
die("Connection Failed: ".mysqli_connect_error());
$var = @$_POST['id'] ;
$query = 'UPDATE onoff SET onoroff = $var WHERE ID = 1;';
mysqli_query($db, $query);
?>
【问题讨论】:
首先function rel(id)
有一个参数和onchange,您只使用了rel()
.. 第二:您将它传递给php 的id
是什么? ..如果id
是一个选择值,那么onchange使用rel(this.value)
而不是rel()
【参考方案1】:
这里需要一些更正。
错误
-
您没有在代码中需要在 ajax 调用中发送的任何地方读取选择控件的值
onchange
的 selectonoff
列表正在尝试 submit
form
并同时调用 rel
函数(不带任何参数)。当selectonoff
选择发生变化时,它似乎需要触发ajax 调用。
jquery 需要通过 cdn 或本地目录添加一次
需要在头部的script标签前添加。
待办事项
从onchange
中删除this.form.submit();
和rel
。而是删除整个onchange
基于您的页面的代码正在运行并将数据提交到 php 页面,如下所示。您可以根据需要进行更改。
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>User Settings Dropdown Menu</title>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script type="text/javascript">
function rel(id)
var formData = "id": id;
$.ajax(
type: "POST",
data: formData,
url: "../app/update.php",
cache: false,
success: function(response)
console.log("response", response);
alert("Record successfully updated");
,
error: function(error)
console.log("error", error);
);
$(document).ready(function()
$("#selectonoff").change(function()
var val = $("#selectonoff option:selected").val();
rel(val);
);
);
</script>
</head>
<body>
<!-- <div id="wrap"> -->
<br><br><br><br>
<h1>Admin Settings Menu</h1>
<form method="post" action="adminconfig.php">
<p>Toggle BBQ Form</p>
<select id="selectonoff" name="selectonoff">
<option value="NONE">Select</option>
<option value="ON">Toggle ON</option>
<option value="OFF">Toggle OFF</option>
</select>
</form>
<form action="../index.php">
<input type="submit" value="Home" />
</form>
</body>
</html>
注意 我现在已经测试了上面的代码可以正常工作并将 ajax 请求提交到 php 脚本。
【讨论】:
我很惊讶我错过了添加要在函数调用中使用的变量,但我更改了它以尝试您提出的内容,但这无法解决问题。 您能否提供更多信息,例如您能说出您遇到的错误吗? 现在看到 post ajax 调用需要为data
属性发送一个对象我自己没有尝试过这段代码。以上是关于获取 ajax 请求以更新 SQL 表中的列的主要内容,如果未能解决你的问题,请参考以下文章
SQL 服务器查询以获取表中的列列表以及数据类型、NOT NULL 和 PRIMARY KEY 约束