2013-03-03 24 views
0

如何在jQuery ajax调用后恢复/停止表单提交? 我有MVC应用程序,我打电话给json的行动,如果结果是错误的,我想停止表单提交,如果结果成立,我想恢复。

的Jquery:

$("#formElem").submit(function (e) { 
     e.preventDefault(); 
     $.ajax({ 
      url: '@Url.Action("Check", "TimeRanges")', 
      type: "GET", 
      data: {startRange: $('#SelectedStartTimeRange').val() , endRange: $('#SelectedEndTimeRange').val()}, 
      aync: false, 
      dataType: 'json', 
      success: function (data) { 
       if(data == false) { 
        $("#rangeexist").html('Error'); 
        return false; 
       } else { 
        return true; 
       } 
      } 
     }); 
    }); 

行动

public JsonResult Check(string startRange, string endRange) 
{ 
    var result = false; 
    if (!String.IsNullOrEmpty(startRange) && !String.IsNullOrEmpty(endRange)) 
    { 
     TimeSpan spanStart; 
     TimeSpan.TryParse(startRange, out spanStart); 

     TimeSpan spanEnd; 
     TimeSpan.TryParse(endRange, out spanEnd); 

     var timeRangExisted = _repo.All().Where(x => x.TimeFrom.Equals(spanStart) && x.TimeTo.Equals(spanEnd)).ToList(); 
     if (!timeRangExisted.Any()) 
      result = true; 
    } 

    return Json(result, JsonRequestBehavior.AllowGet); 
} 
+1

如果结果是真实的,甚至虚假,形式已经提交。成功:表示表单已提交且结果已返回。 – 2013-03-03 12:05:33

回答

0
var ajaxSent = false; 
$("#formElem").submit(function (e) { 
    if (!ajaxSent) 
    e.preventDefault(); 
    $.ajax({ 
     url: '@Url.Action("Check", "TimeRanges")', 
     type: "GET", 
     data: {startRange: $('#SelectedStartTimeRange').val() , endRange: $('#SelectedEndTimeRange').val()}, 
     aync: false, 
     dataType: 'json', 
     success: function (data) { 
      if(data == false) { 
       $("#rangeexist").html('Error'); 
       ajaxSent = true; 
       $("#formElem").submit(); // something like that .... 
       return false; 
      } else { 
       return true; 
      } 
     } 
    }); 
}); 
+0

就是这样。谢谢 :) – 2013-03-03 12:39:50