Данные формы в Webix UI модальные

Я использую модальный интерфейс Webix, вот как я его использую:

this.add = function () {
scrollArea.css("overflow", "hidden");
$.ajax({
 type: "GET",
 url: "/detail/create",
 success: function (form) {
  webix.message.keyboard = false;
  webix.modalbox({
   title: "New detail",
   buttons: ["Accept", "Decline"],
   text: form,
   width: 400,
   callback: function (result) {
    switch (result) {
     case "0":
      addDetail();
      break;
     case "1":
      break;
    }
    scrollArea.css("overflow", "auto");
   }
  });
 }
});
function addDetail() {
 $.ajaxSetup({
  headers: {
   'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
 });
 $.ajax({
  type: "POST",
  url: "/detail/store",
  data: $('#detail_add').serialize(),
  contentType: "JSON",
  processData: false,
  success: function () {
  }
 });
}
};


And form's HTML:
<form action="" id="detail_add" method="post">
<input type="text" name="name" placeholder="Name">
<input type="text" name="article" placeholder="Article">
<input type="hidden" name="location_id" placeholder="1">
<input type="hidden" name="_token" value="{{ csrf_token() }}"/>
</form>

Когда я нажимаю Принять в модальном режиме, мой JSON пуст. Как я могу это исправить? Я пытался получить значение ввода по console.log, но оно тоже пустое.

2 ответа

Решение

Я нашел решение для этого. Это действительно просто, но я сделал ошибку. Мне нужно было использовать

switch (result) {
    case "0":
       addDetail;
       break;
    case "1":
       break;
}

Вместо

switch (result) {
    case "0":
       addDetail();
       break;
    case "1":
       break;
}

Потому что addDetail() вызывал функцию сразу, из-за этого мои отправляющие данные были пустыми

В общем, это не ответ, но пример кода не применим для решения чего-либо, потому что:

  • Мы не знаем, что такое объект scrollArea
  • Вы пытаетесь реализовать код, который зависит от успешного ответа скрипта, которого у нас нет
  • У нас нет кнопки с действием для запуска вашего кода

Вот код, слегка измененный для работы и демонстрации вашего случая:

Я использую модальный интерфейс Webix, вот как я его использую:

scrollArea = $(window.document);
this.add = function() {

  //scrollArea.css("overflow", "hidden");

  $.ajax({
    type: "GET",
    url: "/detail/create",
    beforeSend: function(form) {
      webix.message.keyboard = false;
      webix.modalbox({
        title: "New detail",
        buttons: ["Accept", "Decline"],
        text: form,
        width: 400,
        callback: function(result) {
          switch (result) {
            case "0":
              addDetail();
              break;
            case "1":
              break;
          }
          scrollArea.css("overflow", "auto");
        }
      });
    }
  });

  function addDetail() {
    $.ajaxSetup({
      headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      }
    });

    $.ajax({
      type: "POST",
      url: "/detail/store",
      data: $('#detail_add').serialize(),
      contentType: "JSON",
      processData: false,
      success: function() {}
    });
  }
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<link rel="stylesheet" href="http://cdn.webix.com/edge/webix.css" type="text/css">
<script src="http://cdn.webix.com/edge/webix.js" type="text/javascript"></script>

<form action="" id="detail_add" method="post">
  <input type="text" name="name" placeholder="Name">
  <input type="text" name="article" placeholder="Article">
  <input type="hidden" name="location_id" placeholder="1">
  <input type="hidden" name="_token" value="{{ csrf_token() }}" />
  <button onClick="add()">Add</button>
</form>

Когда я нажимаю Принять в модальном режиме, мой JSON пуст. Как я могу это исправить? Я пытался получить значение ввода по console.log, но оно тоже пустое.

Другие вопросы по тегам