单击复选框时,我正在尝试同步更新数据库。我决定使用 ajax,但它似乎无法识别 ajax。
代码:将成为Switch_Active(this.id)函数的元素
...
<div class='switch'>
<label>
Deactivate
<br>
<input name='switch_Activate1'onclick='Switch_Activate(this.id)' type='checkbox'>
<span class='lever'></span>
<br>
Activate
</label>
</div>
...
剧本
<script type="text/javascript">
function Switch_Activate(id) {
if (!document.getElementById(id).checked) {
var projectID = id;
var Activation_Status = 1;
var dataString = "projectID=" + projectID + "&Activation_Status=" + Activation_Status ;
$.ajax({
type: "POST",
url: "ajax/switchchange.php",
data: dataString,
cache: false,
dataType: "json",
success: function (data) {
alert("asd1");
}
});
}
else{
var projectID = id;
var Activation_Status = 1;
var dataString = "projectID=" + projectID + "&Activation_Status=" + Activation_Status ;
$.ajax({
type: "POST",
url: "ajax/switchchange.php",
data: dataString,
cache: false,
dataType: "json",
success: function (data) {
alert("asd2");
}
});
}
}//
</script>
开关更改.php
<?php
include("../../connection/connection.php");
echo"<script type='text/javascript'>alert('php in');</script>";
$projectID = $_POST['projectID'];
$Account_Status = $_POST['Activation_Status'];
$sql = "update tblProject set projectStatus = '$Account_Status' where projectID = '$Account_Status'";
$stmnt = sqlsrv_query($db, $sql);
?>
连接
<?php
//Database Connection
try{
$db = new PDO("sqlsrv:Server=AJ-PC'SQLEXPRESS;Database=RealEstate_DB", "", "");
$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOExceptio $e){
echo $e->getMessage();
die();
}
我会
以这种方式重写您的代码,确保您遵循以下步骤:
- 确保包含 jQuery
- 为什么要使用
this.id
,如果你可以简单地使用this
,它会给你关于该元素对象的所有你需要的 - 您在 if/else 条件下使用相同的代码,您需要做的就是使用必要的选项构建您的
dataString
,然后将数据传递给 AJAX 一次。 - 不需要
return false
,因为单击复选框不会触发其他任何内容。
这是我的代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<input id="someID" name='switch_Activate1' onclick='Switch_Activate(this)' type='checkbox'>
<script>
function Switch_Activate(checkbox) {
var dataString = {
'project_ID': checkbox.id,
'Activation_Status': checkbox.checked
};
$.ajax({
type: "POST",
url: "ajax/switchchange.php",
data: dataString,
cache: false,
dataType: "json",
done: function (data) {
alert(data.message);
if (data.response) {
// your success code
} else {
// your error code
}
}
});
}
</script>
更新:
我刚刚意识到您的 AJAX 调用设置为接受 JSON dataType: "json"
但您的 PHP 没有输出 JSON。您需要将所有输出转换为 JSON,因此在您的情况下,您可以执行以下操作:
<?php
// ... your Database UPDATE code...
$result = array(
"response" => TRUE,
"message" => "some message"
);
header("Content-type: application/json");
echo json_encode($result);