Я подозреваю, что она будет показывать вам пустую страницу с 1
, отображаемой на ней, потому что после первого представления ваша сетка Pjax перезагружается с помощью оператора
$.pjax.reload({container:'#issuehrGrid'});
и после перезагрузки ваше beforeSubmit
событие больше не привязывается к форме, так как форма Html
снова загружается, и когда вы отправляете форму повторно, она просто отправляет простую форму и отображает пустую страницу с 1
, вам нужно использовать событие pjax:complete
для pjax, так что для перезагрузки сетки ваш скрипт снова привязывает событие beforeSubmit
к форме.
Кроме того, у вас есть синтаксическая ошибка в вашем скрипте, которая должна быть исправлена. Измените свой скрипт на следующий
<?php
$formName = $model->formName();
$js = <<<JS
$(document).on("ready pjax:complete",function(){
$('form#{$formName}').on('beforeSubmit', function(e){
var \$form = $(this);
$.post(
\$form.attr('action'),
\$form.serialize()
).done(function(result) {
if(result == 1)
{
$(\$form).trigger('reset');
$.pjax.reload({container:'#issuehrGrid'});
}else
{
$('#message').html(result.message);
}
}).fail(function()
{
console.log('server error');
})
return false;
});
});
JS;
$this->registerJS(
$js,
\yii\web\View::POS_READY
);
?>
UPDATE
и не забудьте изменить код действия контроллера и изменить echo 1
на return 1
и echo 0
на return 0