2014-10-18 3 views
0

Я пытаюсь опубликовать свою форму, используя сообщение ajax в mvc razor. И я пытаюсь проверить форму перед отправкой в ​​базу данных. Но даже если форма действительна, она блокирует форму для публикации.

$(function() { 
    $('#MyForm').submit(function() { 
     if ($('#MyForm').valid()) { 
     //$("#divLoading").show(); 
     $.ajax({ 
      type: "POST", 
      url: '@Url.Action("Something", "Something")', 
      data: $('#MyForm').serialize(), 
      dataType: 'json', 
      error: function (xhr) { 
       $("#Message").text(xhr.statusText); 
       $('#divLoading').hide('fast'); 
      }, 
      success: function (result) { 
       //$('#divLoading').hide('fast'); 
       if (result.IsSuccess) { 
        $("#Message").html(result.Message); 
        $('#MyForm')[0].reset(); 
       } 
      } 
     }); 
     } 
    }); 
}); 

Начало формы содержит

@using (Ajax.BeginForm("Something", "Something", new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "POST" }, new { @id = "MyForm" })) 
{ 
} 

Заранее спасибо

+1

почему у вас ProviderForm и MyForm? – progysm

+0

Извините, оба они одинаковы –

+0

Попробуйте вызвать '$ (this) .validate();' перед оператором 'if' –

ответ

0

Вашей проблемы в том, что вы все еще используете действие формы по умолчанию, так что страница будет перезагрузить перед тем, как Ajax ответа. Попробуйте это:

$('#MyForm').submit(function (event) { 
event.preventDefault(); 

if ($('#MyForm').valid()) { 
    //$("#divLoading").show(); 
    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("Something", "Something")', 
     data: $('#MyForm').serialize(), 
     dataType: 'json', 
     error: function (xhr) { 
      $("#Message").text(xhr.statusText); 
      $('#divLoading').hide('fast'); 
     }, 
     success: function (result) { 
      //$('#divLoading').hide('fast'); 
      if (result.IsSuccess) { 
       $("#Message").html(result.Message); 
       $('#MyForm')[0].reset(); 
      } 
     } 
    }); 
} 

где это различие:

$('#MyForm').submit(function (event) { 
    event.preventDefault(); 
Смежные вопросы