Ich habe versucht, benutzerdefinierte Validator für Jsgrid, die das Element überprüfen zu erstellen. Name ist wirklich aus der DB oder nicht vor dem Einfügen oder Bearbeiten, um jede doppelte Zeile zu vermeiden.Wie kann ich überprüfen, ob das eingefügte/editierte Element in jsgrid nicht dupliziert ist?
das Problem Ich las dreimal die Dokumente von jsgrid, aber ich habe keine Ahnung, wie Sie das Problem beheben.
diese Arbeit https://github.com/tabalinas/jsgrid-php half mir zu viel und ich verwandelte sich, um für meine Arbeit und mysqli nützlich zu sein.
die Idee: I Funktionskontrolle DB gemacht, wenn der Wert vorhanden ist oder nicht, ist es in einer PHP-Klasse wahr sonst falsch zurück, wenn vorhanden
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;
}
}
und ich nannte diese Funktion in einer externen Datei „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);
?>
in 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"));
});
});
bitte helfen, ich bin Versuch f oder 2 Tage, um das Problem zu beheben. Dank für die Entwickler zum Schreiben der Validate js Datei verwenden ich jsgrid-1.4.1
Sorry !, Ich habe es versucht, aber nicht erfolgreich; Ich denke, es gibt ein Problem in diesem $ .ajax ({Typ: "CHGO", URL: "..bin/Checkvalue.php", Daten: item.Name, dataType: "json"}); Ich ändere es in POST aber wirklich nichts –
meinst du async verwenden: false in Ajax-Funktion –
Nein, Async: false ist veraltet. Was ich in der ersten Option meinte, ist etwas wie '$ .ajax ({/ * Anfrage zum Laden vorhandener Elemente in DB * /}). Done (function (existingItems) {$ (" # jsGrid "). JsGrid (/ * config von jsGrid mit validate Funktion, die versuchen wird Wert in existingItems vor dem Einfügen * /)}) 'zu finden. Ich hoffe es ist klarer. – tabalin