0

我在页面上有一个日历的约会表。该表是所有尚未批准的任命。

管理员需要在安排会议之前批准会议,因此表格中有一个“批准”链接。单击“Approve”会调用一个 ajax 方法,该方法会将约会的“approved”字段设置为 true。然后 js 删除该行并重建表,这样不需要全页刷新就可以看到约会不再在表中。

我的问题是ajax方法只有在当时还没有预约的情况下才会批准预约。如果存在冲突,则约会应保持未经批准(x.approved = false)。

这很好用,但是 ajax 方法只是将 RedirectToAction 返回到带有表的页面,并且 javascript 继续删除该行。页面刷新后,该行返回,因为约会仍未获批准。

有没有办法返回一个 RedirectToAction 并返回一个布尔值?是否可以更改 javascript 变量(即 wasApproved),以便行删除 javascript 仅在(wasApproved == true)时运行?我认为现在不是使用ajax 的success 功能的合适时机,因为ajax 方法应该总是成功运行。

4

1 回答 1

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'
        });         
    });
);
于 2012-12-13T16:32:46.400 回答