可选的$.ajax调用

可选的$.ajax调用,ajax,asp.net-mvc-3,jquery,Ajax,Asp.net Mvc 3,Jquery,我的asp.NETMVC3View中有html.actionlink,点击链接时有jquery ajax调用。在我的动作方法中,假设我有: if (a == 2) //return ok return Json(new { Error = "false", Message = "Everything ok" }, JsonRequestBehavior.AllowGet); else return Con

我的asp.NETMVC3View中有html.actionlink,点击链接时有jquery ajax调用。在我的动作方法中,假设我有:

 if (a == 2) //return ok 
                return Json(new { Error = "false", Message = "Everything ok" }, JsonRequestBehavior.AllowGet);
            else
                return Content("");
Ajax调用是:

$(function () {
    $('#checkExists').click(function () {
        $.ajax({
            url: $('#checkExists').attr('href'),
            global: true,
            type: 'GET',           
            timeout: 5000,
            success: function (data) { //invoke when receive response from server                             

                if (data != null && data.Error != '') //return failed
                {
                    alert(data.Error);
                }
//                else {
//                    alert('error occurs 1');
//                    //action ok here
//                }
            },
          error: function (xhr, ajaxOptions, thrownError) {
              alert(xhr + ajaxOptions +  "Cannot connect to server to load data"); //sever is not available                 
            },
            complete: function () { //ajax done
                //alert('complete');
            }
        });
        return false;
    });

如果是我调用的ajax,如何停止$.ajax调用?

停止ajax调用是什么意思?您已经发送了AJAX调用,它击中了控制器操作。正是这个控制器操作返回了JSON或纯文本。但在现阶段,停止已经做过的事情为时已晚。这就像是试图让某人从死亡中复活。

您已经进行了ajax调用,在当前场景中无法撤消它

您可以做的是发送
doNothing
响应

 if (a == 2) //return ok 
                return Json(new { Error = "false", Message = "Everything ok" }, JsonRequestBehavior.AllowGet);
            else
                return Json(new { Message = "do nothing" }, JsonRequestBehavior.AllowGet);
在ajax成功回调中

success:function(data){
if(data.Message==='do nothing'){
// simply do nothing
}
}
jsut作为旁注,您可以在实例化ajax调用之前取消它。请参见下面的答案

更新

if (a == 2) //return ok 
                return Json(new { Error = "false", Message = "Everything ok" }, JsonRequestBehavior.AllowGet);
            else
                return Content("");
在成功回调中

success:function(data){
if(!data.Message)
//alert(data); //content will be shown
}

我需要创建两种动作方法吗?@DotnetSparrow,我不知道。这取决于你想做什么。如果创建两个动作,第一个动作确实可以用AJAX调用并返回JSON,而第二个动作可以是返回标准视图或内容的普通ActionLink。我不想要此警报我尝试了更新的代码,在这种情况下,服务器端代码没有执行。页面停止与问题中粘贴的代码相同。。。还有别的问题