以下是我在jqGrid中使用的示例刪除選項。它工作得很好,我的服務器端腳本工作正常。記錄被刪除,但收到服務器的響應後會出現問題。刪除錯誤後的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: /");
}
}
我希望這有助於看到我目前正在返回到電網。
* UPDATE * 我所做的更改源在jqGrid的插件包括價值一個toString()預成型分裂之前。
在jquery.jqGrid.min.4.3.1的331行:
變種A = []; A = H.split( 「」);
更改爲:
變種A = []; A = H.toString()分割( 「」);
這似乎是在事物的宏觀計劃中無害的變化,並避免陣列試圖分裂。非常感謝幫助的人。你當然指出我在正確的地方開始尋找,奧列格!
不是說它會解決你的問題,而是'response = eval(「(」+ response.responseText +「)」);'(如果你期待一個對象文字),試試'response = JSON。解析(response.responseText);'。甚至是'.parseJSON()'。但這取決於你期望的迴應 – Ian 2013-05-02 15:53:07
非常感謝Ian,我已經這麼做了,我還沒有遇到過那個jQuery功能:) – PieterLourens 2013-05-03 07:15:38