我试图让当前代码从表单中获取on或off值,并使用对JS函数的函数调用将其放入SQL数据库中,该JS函数包含一个AJAX请求,然后将其发送到运行实际查询的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);
?>发布于 2019-02-27 04:32:04
这里需要做的修改很少。
错误
对于需要在ajax call
onchange selectonoff列表中发送的代码中的任何地方,您没有读取select控件的值试图submit form,同时调用rel函数(不带任何参数)。当selectonoff选择发生变化时,似乎需要触发ajax调用。待办事项
从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请求提交给脚本。
https://stackoverflow.com/questions/54893453
复制相似问题