DoS yourself
JSON object
,或者您正在使用
json2.js
基本上,这段代码只是在您向用户显示的表的每一行中查找“隐藏ID”字段,并将其添加到数组中。你可以根据需要进行调整。
var recordsToDelete = [];
$("tr.myRow").each(function() {
var id = $(this).find("input:hidden").val();
recordsToDelete.push(id);
});
var json = JSON.stringify(recordsToDelete);
处理结果可能更难。您应该设计您的系统,以便(如果成功)删除每一行。除非你处理的是一个非常复杂的系统,否则你永远不应该出现一些行通过而一些行失败的情况。如果发生这种情况,您需要重新考虑您的系统架构。jQuery有
events for
success
and
failure
您可以使用它来处理请求的一般成功或失败,我建议您使用它。
从上面的代码继续,这是处理删除记录的一种方法。我用
complete
成功
和
失败
完成
$.ajax({
url: "http://stackoverflow.com/questions/1653127",
type: "POST", // Always use POST when deleting data
data: { ids: json },
complete: function(xhr, status) {
var response = JSON.parse(xhr.responseXML);
// Response will be an array of key/value
// pairs indicating which rows succeeded or failed
for (var i = 0; i < response.length; i++) {
var recordID = response[i].recordID;
var status = response[i].status;
// Do stuff with the status codes here
}
}
});
针对评论:
-
对于像gmail这样的应用程序来说,它的工作方式非常复杂,说“我会这样做,因为谷歌是这样做的”并不是一个好主意。并非所有适用于谷歌的东西都适用于每个公司或网站。像谷歌这样的公司面临着几乎没有其他网站需要担心的问题。然而,为了回答你的问题
-
我只是验证了这一点:GMail使用一个带有ID数组的AJAX请求。不会发回任何个人状态代码。似乎(我在这里猜测)Gmail会为您刚才执行的操作返回一个“操作ID”,因此您可以通过单击删除电子邮件后短暂出现的撤消链接来撤消该操作。
-
-
这真的取决于你的应用程序的业务规则。如果您的应用程序在多人可以同时更改记录的情况下使用(仅举一例),则一个用户试图删除的内容可能在其他人单击“删除”按钮之前已被删除。在大多数情况下,我看不到有人关心谁先删除了记录,因为如果它被删除,它就被删除了,不管是谁真正删除的。然而,业务规则可能会规定(尽管可能很荒谬)你需要向用户报告这些信息。在这种情况下,您必须返回每次删除的状态数组。
-
为了防止黑客删除其他人的记录,有几件事要做: