необязательный вызов $ .ajax - PullRequest
1 голос
/ 12 июля 2011

У меня есть html.actionlink в моем asp.net MVC 3view и вызов jjery 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?

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

вы уже сделали вызов 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 до того, как вы его создадите, см. Этот SO-ответ Прервать запросы Ajax с использованием jQuery

обновление

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
}
0 голосов
/ 12 июля 2011

Что вы подразумеваете под остановкой вызова AJAX?Вы уже отправили вызов AJAX, и он выполнил действие контроллера.Именно это действие контроллера вернуло JSON или простой текст.Но на этом этапе уже слишком поздно останавливать то, что уже было сделано.Это попытка вернуть кого-то из смерти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...