Yii2 pjax работает только в первый раз

Я использую pjax с Yii2, и я столкнулся с проблемой с pjax.
Все сценарии работают правильно и нормально только в первый раз и после отправки запроса pjax и обновления содержимого таблицы, сценарии и pjax не работают. Если я уберу строку $.pjax.reload({container:'#products-table'}); все скрипты работают. А также я нашел это решение ( Yii2 Pjax и ActiveForm beforeSubmit не работают после перезагрузки? ): » $(document).on('ready pjax:success', function(){ // to do }); «и с этим работает нормально, НО после добавления большего количества кода jquery он перестал работать снова. Пожалуйста, если у кого-то есть такая же проблема, пожалуйста, поделитесь с решением. Спасибо!

$(document).on('ready pjax:success', function(){

$(".product-edit-submit").on('click', function(){
$.ajax({
type : "POST",
url : editUrl,
data: {
id: this.id,
productName: productName,
productCost: productCost,
_csrf: csfr
},
success  : function(response) {
$.pjax.reload({container:'#products-table'});
},
error : function(response){
console.log(response);
}
});
return false;

});
});
<?php Pjax::begin(['id' => 'products-table']); ?>
<table class="table table-hover table-striped">
.......
</table>
<?php Pjax::end(); ?>

2

Решение

если ваш код останавливается после добавления дополнительных библиотек, попробуйте зарегистрировать его, чтобы убедиться, что он будет выполняться после включения всех библиотек:

<?php
$js = <<< 'JAVASCRIPT'
$(document).on('ready pjax:success', function(){

$(".product-edit-submit").on('click', function(){
$.ajax({
type : "POST",
url : editUrl,
data: {
id: this.id,
productName: productName,
productCost: productCost,
_csrf: csfr
},
success  : function(response) {
$.pjax.reload({container:'#products-table'});
},
error : function(response){
console.log(response);
}
});
return false;

});
});
JAVASCRIPT;
$this->registerJs($js,\yii\web\View::POS_READY);
0

Другие решения

Я нашел причину, по которой скрипты второго раза не запускаются.
Я поставил сценарий за пределами $(document).on('ready pjax:success', function(){ //code });, После помещения его внутрь pjax:successвсе сценарии снова работают. Спасибо!

0

Просто измени эту строку $(".product-edit-submit").on('click', function(){

к:

 $(document).on('click', '.product-edit-submit', function () {

Тогда будет работать

0
По вопросам рекламы [email protected]