这是我在 jqGrid 中使用的示例删除选项。它工作得很好,我的服务器端脚本工作得很好。记录被删除,但是在收到服务器的响应后出现了问题。
// Del Options
{
mtype: "POST",
modal: true,
url: "/internal/backupmanagement/backupmanager/deleteMySQLDB",
reloadAfterSubmit: false,
onclickSubmit: function () {
var post = $("#grid_" + o.id).jqGrid("getGridParam", "postData");
var server = post.serverID;
$.openDialog("load", "Deleting old database entry. Please wait...");
var selrow = $("#grid_" + o.id).jqGrid("getGridParam", "selrow");
var row = $("#grid_" + o.id).jqGrid("getRowData", selrow);
console.log("about to return", row, server);
return {
id: row.recid,
database: row.database,
server: server
};
},
afterSubmit: function (response, postdata) {
response = eval("(" + response.responseText + ")");
console.log(response);
return [true, "success"];
},
afterComplete: function (response, postdata, formid) {
response = eval("(" + response.responseText + ")");
var selrow = $("#grid_" + o.id).jqGrid("getGridParam", "selrow");
$("#grid_" + o.id).jqGrid("delRowData", selrow);
if (response.error == 0) {
$.openDialog("info", "Successfully deleted " + postdata.database + ".");
} else {
$.openDialog("info", "And error occured - " + response.msg + ".");
}
}
}
在网格中触发 afterComplete 事件之前,我收到以下错误:
Uncaught TypeError: Object [object Array] has no method 'split'
因此,当它期待一个字符串时,似乎有一些东西作为一个对象返回。我不确定我来自服务器的响应格式是否正确,我也无法在文档中找到任何预期的响应。
* 更新 * 请求的服务器端代码。我刚刚包含了与 jqGrid 交互的控制器功能,其余的正在工作并在应用程序中进一步发生。
function deleteMySQLDB()
{
if (IS_AJAX) {
if (($this->Application->deleteMySQLDBData(
$_POST["id"],
$_POST["database"],
$_POST["server"]
)) === false) {
echo json_encode(
array(
"error" => 1,
"msg" => "Failed Deleting record from database: "
.$this->Application->error
)
);
return false;
}
echo json_encode(
array(
"error" => 0,
"msg" => "success"
)
);
return true;
} else {
header("Location: /");
}
}
我希望这有助于了解我目前正在返回网格。
* 更新 * 我所做的是更改 jqGrid 插件中的源以在执行拆分之前在值上包含一个 toString()。
在 jquery.jqGrid.min.4.3.1 的第 331 行:
var A=[];A=H.split(",");
变成 :
var A=[];A=H.toString().split(",");
这似乎是对事物的宏伟计划的无害改变,并且避免了尝试拆分数组。非常感谢各位的帮助。奥列格,你肯定给我指出了正确的开始寻找的地方!