2016-02-11 4 views
1

Я пытаюсь отправить форму через pjax и после отправки. Я хочу обновить таблицу, но после отправки формы и попытки перезагрузки ($.pjax.reload({container:'#products-table'});) скрипты jquery больше не работают. Даже я добавил pjax:success, но если я не перезаряжаю таблицу, все скрипты работают и отправляют запросы, а затем я должен перезагрузить их вручную, чтобы увидеть изменения. Или я попытался отправить форму без pjax и перезагрузки страницы Yii, а затем снова проблокирует скрипты. Пожалуйста, ваши отзывы. БлагодаряYii2 pjax reload

$(document).on('ready pjax:success', function(){ 
    $("form.products-input-style").on('beforeSubmit', function(e){ 

      var form = $(this); 

      $.ajax({ 
       type : "POST", 
       url: form.attr('action'), 
       data: new FormData(this), 
       processData: false, 
       contentType: false, 
       success : function(response) { 
        $.pjax.reload({container:'#products-table'}); 
        $.notify({ 
         icon: "pe-7s-check", 
         message: "Product is updated." 

        },{ 
         type: type[2], 
         timer: 10, 
         placement: { 
          from: 'top', 
          align: 'right' 
         } 
        }); 
       }, 
       error : function(response){ 
        console.log(response); 
        $.notify({ 
         icon: "pe-7s-close-circle", 
         message: "Error! " + response 

        },{ 
         type: type[4], 
         timer: 10, 
         placement: { 
          from: 'top', 
          align: 'right' 
         } 
        }); 
       } 
      }); 

      return false; 

     }).on('submit', function(e){ 
      e.preventDefault(); 
     }); 
}); 

ответ

0

Если у Вас есть проблемы с формами ввода после pjax перезагрузки, то попробуйте отключить YII стороне клиента проверки:

ActiveForm::begin([ 
    'enableClientScript' => false, 
]); 

Это какая-то ошибка на юй \ виджеты \ ActiveForm и юй \ самозагрузки \ ActiveForm.

0

Я думаю, что ваш обработчик заменяется новым html-кодом (после обновления Pjax). Попробуйте использовать delegated handlers.

Например:

$(function(){ 

    $(document).on('beforeSubmit', 'form.products-input-style', function(event){ 
     // ... 
    } 

}); 
Смежные вопросы