2014-10-15 5 views
0

У меня есть проект mvc. Я открываю форму в модальном диалоге. Пользователь заполняет форму и сохраняет удары. Форма отправляется в контроллер, но я пытаюсь перехватить и отправить через json.JSON not stopping form submit on modal window

Глядя в сетевой раздел инструментов Dev tools, а также имея alert() в моем json, он не работает, и я думаю, что он не подключен должным образом? Я прочитал несколько страниц, и кажется, что мой json в основном правильный.

Я знаю, что существует связь между родительской страницей и окном ... которое является div, которое становится модальным окном. Однако я не знаю достаточно, чтобы определить, является ли это частью разлома.

В родительском окне показано, как запускается мой модальный режим.

$("#edit").click(function (e) 
    { 
     e.preventDefault(); 

     var detailsWindow = $("#window").data("kendoWindow"); 

     if (!detailsWindow) 
     { 
      // create a new window, if there is none on the page 
      detailsWindow = $("#window") 
       // set its content to 'loading...' until the partial is loaded 
       .html("Loading...") 
       .kendoWindow(
        { 
         modal: true, 
         width: "800px", 
         height: "400px", 
         title: "@T("....")", 
         actions: ["Close"], 
         content: 
          { 
           url: "@Html.Raw(Url.Action("...", "..."))", 
           data: { ... } 
          } 
        }).data('kendoWindow').center(); 
     } 

     detailsWindow.open(); 

     }); 

Приведенный выше код попадает в контроллер и заполняет модель, а затем загружает частичный по центру, как ожидалось.

В модальный парциальное у меня есть это:

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "formCreateEdit" })) 
{ 
    ...HTML ELEMENTS... 
    <input type="submit" name="save" id="save" value="@T("...")" /> 
} 

<script> 
    $(function() 
    { 
    $("#formCreateEdit").submit 
     (function (e) 
     { 
      alert(e); 
      e.preventDefault(); //As we will manually submit the form 
      $.ajax(
      { 
       type: "POST", 
       url: "@Html.Raw(Url.Action("...", "..."))", 
       data: $(this).serialize(), 
       success: function (data) 
       { 
        //here we check if database called resulted in Success/Failure 
        if (data.Result === "Success") 
        { 
         alert('Finis'); 
        } 
        else 
        { 
         //Show error message or whatever. 
        } 
       } 
      }) 
      //}); 
     }); 

</script> 

Edit:

Я также попытался перехватить событие нажатия кнопки. Я могу Веру хорошо делал это неправильно, так вот код, когда я пытался что:

$('#save').click(function(event) 
{ 
    event.preventDefault(); 
    // take over and perform ajax post 

    alert('ddd'); 

    $.ajax(
    { 
     type: "POST", 
     url: "@Html.Raw(Url.Action("...", "..."))", 
     data: $(this).serialize(), 
     success: function (data) 
     { 
      //here we check if database called resulted in Success/Failure 
      if (data.Result === "Success") 
      { 
       alert('Finis'); 
      } 
      else 
      { 
       //Show error message or whatever. 
      } 
     } 
    }) 

}); 

ответ

0

Так что в конечном итоге быть более сложными, так как модальный загружаются из вида после прохождения через контроллер ..., таким образом, он считается динамически. Таким образом, решение заключалось в том, чтобы прикрепить процесс создания документа post-обработчика события, как показано здесь. Я связался с этими двумя сообщениями, чтобы члены SO, которые поделились своими знаниями со мной, могут получить вознаграждение, если оно принесет вам пользу.

First Post

Second Post

0

Intercept щелчок кнопки отправки, а не в форме.

$('#save').click(function(event){ 
    event.preventDefault(); 
    // take over and perform ajax post 
}) 
+0

Я попробовал, что ... может быть неправильно. Он идет прямо к контроллеру. Проверьте мое редактирование. – GPGVM

 Смежные вопросы

  • Нет связанных вопросов^_^