gpt4 book ai didi

javascript - 如何检查 jsgrid 中插入/编辑的项目是否重复?

转载 作者:行者123 更新时间:2023-11-30 16:10:47 26 4
gpt4 key购买 nike

我尝试为 jsgrid 构建自定义验证器来检查项目。在插入或编辑之前名称是否确实存在于数据库中以避免任何重复的行。

这个问题我看了三遍jsgrid的文档,但我不知道如何解决这个问题。

这项工作 https://github.com/tabalinas/jsgrid-php帮了我太多,我转变为对我的工作和 mysqli 有用。

理念:如果该值存在或不存在,我使函数检查数据库,如果存在,它在 php 类中返回 true else false

public function checkName($name){
try{
if(!empty($name)){
$co_conn = $this->CON_conn->open_connect();
$getsame = mysqli_query($co_conn,"select Name from category where Name = '$name'");
if($getsame){
$numit = mysqli_num_rows($getsame);
if($numit > 0) return true;
else return false;
}
else return true;
$this->CON_conn->close_connect($co_conn);
}
else return true;
}
catch(Exception $er){
return true;
}
}

我在外部文件“CheckValue.php”中调用了这个函数

<?php require_once '////the director of the class';
$chnow = new NameOfMyClass();
$result = true;
switch($_SERVER["REQUEST_METHOD"]) {
case "CHGO":
parse_str(file_get_contents("php://input"), $_CHGO);
//to ensure if it work i tested it.
$result = $chnow->checkName($_CHGO["Name"]);
break;
default:
$result = true;
break;
}
header('Content-type: application/json');
echo json_encode($result);
?>

在 basic.html 中

$(function() {
$.ajax({
type: "GET",
url: "../bin/update.php"
}).done(function(response) {
response.unshift({ ID: "0", Name: "" });
$("#jsGrid").jsGrid({
height: "50%",
width: "70%",
selecting: false,
filtering: false,
editing: false,
sorting: false,
paging: true,
autoload: true,
pageSize: 15,
pageButtonCount: 5,
controller: {
loadData: function(filter) {
return $.ajax({type:"GET", url: "../bin/update.php",data:filter});
},
updateItem: function(item) {
return $.ajax({type:"PUT",url: "../bin/update.php",data: item});
},
insertItem: function(item) {
/*$.ajax({type: "CHGO",url: "..bin/Checkvalue.php",data:item.Name, dataType: "json",
success: function(data){
JSON.parse(data);
consol.log(data);
//alert(data);
//I used many ways to find why its not work, then I commented it
}
});
//return $.ajax({type: "POST",url: "../bin/update.php",data: item});
//return data;

//else sweetAlert("error", "this value is exist!", "error");
//here I thought merge sweetalert js will give a good look of work not the normal message.
*/
}
},
fields: [
{ name: "ID", type: "number",width: 50, editing:false, inserting:false },
{ name: "Name", type: "text", width: 50, validate: ["required",{
message: "this value is exist",
validator: function(value,item){
if(value != "")
{
$.ajax({
type: "CHGO",
url: "..bin/Checkvalue.php",
data: item.Name,
success: function(data){
if(data == true)
//I assume here return the true/false to activate the error message but nothing work..sorry
}
});
}
}
} ]
},
{ type: "control", modeSwitchButton: false, deleteButton: false }
]
});
});
$(".config-panel input[type=checkbox]").on("click", function() {
var $cb = $(this);
$("#jsGrid").jsGrid("option", $cb.attr("id"), $cb.is(":checked"));
});
});

请帮助,我尝试了 2 天来解决问题。感谢开发人员编写验证 js 文件我用的是jsgrid-1.4.1

最佳答案

原因是validate只支持同步验证,而我们例子中的验证需要ajax调用,所以是异步的。

你有两个选择:

  1. 预先将数据加载到客户端并在客户端验证插入项目(因此验证将是同步的)
  2. insertItem 方法中验证插入。查看以下问题以了解更多详细信息https://github.com/tabalinas/jsgrid/issues/190

关于javascript - 如何检查 jsgrid 中插入/编辑的项目是否重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36277981/

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