【发布时间】:2013-07-15 14:06:27
【问题描述】:
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'){ ....
【问题讨论】:
-
您不会在“部门存在!”消息的位置显示任何代码(顺便说一句,这是糟糕的英语)应该显示或首先触发它。我还想知道您的 checkUser 函数是否真的返回字符串“FALSE”。你最好返回布尔值 false
-
嗨@Oleg,感谢评论,如果我提交了一个数据库中不可用的新值,那么它就是成功的。我已经实现了一些验证方法来检查该值是否已经存在。如果成功,它将发布:200 OK
-
我只是不是 PHP 开发人员,但代码的某些部分看起来很可疑。例如
if(checkUser($deptnm) == "FALSE")包含return "1";(没有echo或类似的东西)。案例if(mysql_query($ins)){...}包含"Success INSERT msDept";没有echo或return。所以我想从 HTTP 流量的跟踪中看到完整的确切 HTTP 响应。真的可以在回复正文中看到"1"、"Success INSERT msDept"或其他文本吗?response.responseText需要拨打$.parseJSON吗? -
响应体没有抛出任何东西。我只是将代码更改为 echo "1" 并在正文上打印 1。这是萤火虫响应: Connection Keep-Alive Content-Length 0 Content-Type text/html Date Mon, 15 Jul 2013 15:29:17 GMT Keep-Alive timeout=5, max=100