gpt4 book ai didi

javascript - 选择 onblur 触发 ajax 但不更新数据库

转载 作者:行者123 更新时间:2023-12-03 08:59:39 25 4
gpt4 key购买 nike

我有一个选择下拉列表,当它更改时我想更新数据库中的值。当我弹出 gif 时,Ajax 正在触发,控制台中没有错误,但数据库没有更新。所有其他字段(例如下面示例中的开始日期)都工作正常,因此我认为 Ajax 调用是正确的。我尝试使用 onBlur 和 onChange 作为选择的事件处理程序。

<td <form><select onblur="saveToDatabase(this,'workingpatternid', 'employmenthistory', 'employmenthistoryid','<?php echo $employmenthistory[$k3]["employmenthistoryid"]; ?>')"><option value="<?php echo $employmenthistory[$k3]["workingpattternid"]; ?>"><?php echo $employmenthistory[$k3]["text"]; ?></option><?php
if(isset($workingpatterns) && !empty($workingpatterns)){
foreach($workingpatterns as $k4=>$v4) {
?> <option value="<?php echo $workingpatterns[$k4]["workingpatternid"]; ?>"><?php echo $workingpatterns[$k4]["text"]; ?></option><?php }}?></select></form></td>
<td contenteditable="true" onBlur="saveToDatabase(this,'startdate', 'employmenthistory', 'employmenthistoryid','<?php echo $employmenthistory[$k3]["employmenthistoryid"]; ?>')" onClick="showEdit(this);"><?php echo $employmenthistory[$k3]["startdate"]; ?></td>

保存到数据库函数:

<script type="text/javascript" name = "editable fields">
function showEdit(editableObj) {
$(editableObj).css("background","#FFF");
}

function saveToDatabase(editableObj,column,table,primary,id) {
$(editableObj).css("background","#FFF url(loaderIcon.gif) no-repeat right");
$.ajax({
url: "saveedit.php",
type: "POST",
data:'column='+column+'&editval='+editableObj.innerHTML+'&table='+table+'&primary='+primary+'&id='+id,
success: function(data){
$(editableObj).css("background","#FDFDFD");
}
});
}
</script>

保存编辑.php

<?php
require_once("connect_db.php");
$table=$_POST['table'];
$column=$_POST['column'];
$value=$_POST['editval'];
$primary=$_POST['primary'];
$id=$_POST['id'];
$sql = "UPDATE `$table` SET `$column` = '$value' WHERE `$primary`='$id'";
$result = mysqli_query ($dbc, $sql) or die(mysqli_error ($dbc));
?>

最佳答案

调试正在发送的请求:

客户端

如果您在调用页面上按 F12,请转到网络控制台(我假设您使用的是 Chrome 40+ 或 IE 9+ 等较新的浏览器)并确保正在保存缓存(即不保存缓存)页面刷新时刷新)。

更新页面,清除列表,然后再次触发您的代码。注意请求是否按照您的预期发送(单击代表调用 saveedit.php 的行,然后请求)

服务器端

您可以添加对 error_log(var_export($_POST)) 的调用来查看是否收到了预期的结果。结果将保存在您的网络服务器 error.log 中,因此,如果在部署后不小心留下数据,则不会向用户公开数据。

还可以通过跟踪服务器上的 access.log 来验证该页面是否正在被调用。

通过javascript获取期望值:

问题是第一次调用是在 select 中;代码可以是 editableObj.options[editableObj.selectedIndex].value 但第二个代码位于 div 元素中。您应该重新考虑您的页面设计,或者制作两个不同的功能(不推荐)

关于javascript - 选择 onblur 触发 ajax 但不更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32349812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com