Javascript依赖于ajax结果

时间:2012-12-13 16:19:03

标签: c# javascript ajax

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

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

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

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

有没有办法返回RedirectToAction并返回一个布尔值?是否可以更改javascript变量(即wasApproved),以便只在(wasApproved == true)运行行删除javascript?我不认为这是使用ajax成功函数的合适时间,因为ajax方法应该始终在运行中成功。

1 个答案:

答案 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'
        });         
    });
);