我在使用jqGrid时遇到了一些问题。
我添加了一个验证用户输入的方法。如果该部门存在,那么它将显示一条警告信息,“部门存在!”
这是我的jqGrid代码:
afterSubmit: function(response, postdata){
var res = $.parseJSON(response.responseText);
if (res === "1") {
return [false,"Department Already Exist"];
} else {
return [true,"Sucess"];
}
}
我的php添加方法:
if($oper == 'add') {
$deptid = $_POST['idms_department'];
$deptnm = $_POST['department'];
if(checkUser($deptnm) == "FALSE"){
return "1";
} else {
$ins = "INSERT INTO ms_department(department) VALUES('$deptnm')";
if(mysql_query($ins)){
"Success INSERT msDept";
} else {
die("Failed : " .mysql_error());
}
}
mysql_close();
} else .... (another operation)
邮件本身未显示。你如何正确使用afterSubmit方法? 感谢
更新
我已将方法更改为
crudMessage = function(response,postdata){
var res = response.responseText; // response text is returned from server.
if (res === "1") {
return [false,"Department Already Exist"];
} else {
return [true,"Sucess"];
}
}
然后从jqgrid主体中删除afterSubmit并将此行添加到jqgrid导航中:
jQuery("#departments").jqGrid('navGrid','#pager-departments',{edit:true,add:true,del:true}, {closeAfterEdit: true},{beforeShowForm: function(form) { $('#idms_department', form).hide(); },closeAfterAdd:true},{afterSubmit: crudMessage},{closeAfterSearch:true},{});
这是最新的php语法:
include 'configuration.php';
function checkDepartment($department){
$query = "SELECT department FROM ms_department WHERE department ='$department' LIMIT 1";
$result= mysql_query($query);
return mysql_num_rows($result);
}
if($oper == 'add') {
$deptid = $_POST['idms_department'];
$deptnm = $_POST['department'];
if(checkDepartment($deptnm) == 1){
echo '1';
} else {
$ins = "INSERT INTO ms_department(department) VALUES('$deptnm')";
if(mysql_query($ins)){
"Success INSERT msDept";
} else {
die("Failed : " . mysql_error());
}
}
mysql_close();
} else
if($oper == 'edit'){ ....
答案 0 :(得分:2)
在您的代码中,您为什么期待res.insertStatus
?从您提供的PHP代码片段中,您似乎想写一下:
var res = $.parseJSON(response.responseText);
if (res === "User Already Exist!") {
或许我错过了什么?您是否尝试过调试代码?
这应该解释为什么alert
没有出现。
另外,根据jqGrid documentation for form editing:
,它的价值afterSubmit 的 从服务器收到响应后触发。通常用于显示来自服务器的状态(例如,数据已成功保存或由于服务器端编辑原因而取消保存)。接收从请求返回的数据和类型为id = value1,value2的已发布值的数组作为参数。
使用时,此事件应返回包含以下项
的数组[success, message, new_id]
成功是一个布尔值,如果该过程继续为true,如果为false,则显示错误消息并停止所有其他处理。 (如果成功,则忽略消息)。
当我们处于添加模式时,new_id可用于在网格中设置新的行ID。 afterSubmit:function(response,postdata) { ... return [success,message,new_id] }
根据这些文档,您的最终代码应删除alert
并直接使用jqGrid:
if (res === "User Already Exist!") {
return [false, "TODO: put your error message here"];
}