Yii2 pjax重装

时间:2016-02-11 23:20:15

标签: php yii2 pjax

我正在尝试通过pjax提交表单,在提交后我想刷新表但在提交表单并尝试重新加载($.pjax.reload({container:'#products-table'});)后,jquery脚本不再起作用了。即使我添加了pjax:success,但如果我没有重新加载表,所有脚本都在工作并发送请求,然后我必须手动重新加载以查看更改。或者我试图在没有pjax的情况下提交表单,然后由Yii重新加载页面,然后再次使用脚本重新加载。请你的反馈。感谢

$(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();
        });
});

2 个答案:

答案 0 :(得分:0)

如果pjax reload之后输入表单有问题,请尝试禁用yii客户端验证:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menuToggle">
  <span></span>
  <span></span>
  <span></span>
</div>

这是yii \ widgets \ ActiveForm和yii \ bootstrap \ ActiveForm上的一些错误。

答案 1 :(得分:0)

我认为您的处理程序将替换为新的html代码(在Pjax更新之后)。 尝试使用delegated handlers

例如:

false