我在页面上有一个日历约会表。该表是尚未批准的所有约会。
管理员需要在安排会议之前批准会议,因此在表格中有一个“批准”链接。单击“批准”会调用ajax方法,该方法会将约会的“已批准”字段设置为true。然后,js删除该行并重建表,以便不需要完整页面刷新以查看约会不再在表中。
我的问题是,如果当时还没有约会,则ajax方法仅批准约会。如果存在冲突,则约会应保持未批准(x.approved = false)。
工作正常,但是ajax方法只是将RedirectToAction返回到带有表的页面,并且javascript继续删除该行。页面刷新后,该行将返回,因为约会仍未获得批准。
有没有办法返回RedirectToAction并返回一个布尔值?是否可以更改javascript变量(即wasApproved),以便只在(wasApproved == true)运行行删除javascript?我不认为这是使用ajax成功函数的合适时间,因为ajax方法应该始终在运行中成功。
答案 0 :(得分:0)
尝试这样的事情:
在控制器上,提供Json结果。
[HttpPost]
public ActionResult Aprove(int id)
{
/* process database changes*/
return Json(new { success = true}, JsonRequestBehavior.AllowGet);
}
在客户端,只需使用jquery访问,并将此结果作为json对象读取。您可以根据需要删除该行或将重定向更改为其他URL。类似的东西:
$(document).ready(function() {
$("a.aprove").click(function() {
var id = /* provide an id to pass as a parameter.. could be on the 'rel' property of a tag. */
$.ajax({
type: 'POST',
url: "Controller/Aprove",
data: { id : id },
success: function (data) {
if (data.success)
{
// remove the tr row...
$(this).closest("tr").remove();
// or reload the page with
// document.location.reload(true);
}
},
dataType: 'json'
});
});
);