显示服务器响应中的错误消息

我有一些jqGrid的问题。

我添加了一个validation用户输入的方法。 如果部门存在,那么它将显示一条警告信息,“部门存在!”

这是我的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方法? 谢谢

UPDATE

我把方法改为

  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'){ .... 

在你的代码中,为什么你期望res.insertStatus ? 从您提供的PHP代码片段中,您似乎想要写:

 var res = $.parseJSON(response.responseText); if (res === "User Already Exist!") { 

或许我错过了什么? 你试过调试代码吗?

这应该解释为什么alert没有出现。


另外,根据表格编辑的jqGrid文档,它的价值如何:

afterSubmit在从服务器收到响应后触发。 通常用于显示来自服务器的状态(例如,数据已成功保存或由于服务器端编辑原因而取消保存)。 接收从请求返回的数据和类型为id = value1,value2的已发布值的数组作为参数。

使用时,此事件应返回包含以下项的数组[success, message, new_id] where

success是一个布尔值,如果该过程继续,则为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"]; }