Ich habe einige Probleme beim Laden eines PJAX
Container in einem benutzerdefinierten modal
ähnlich wie Bootstrap modal
.Reload PJAX-Container in modalen Dialog mit Yii2 und Jquery
Das Ziel dieses Codes ist die pjax Container laden alle eingereichten Kommentare innerhalb der pjax
‚Listview
s neu zu laden.
jquery.pjax.js:740 Uncaught TypeError: Cannot read property '0' of null
, die Teil einer Funktion namens extractContainer ist:
Die anfängliche reload wird von jQuery
aber gefolgt von einer Ausnahme in jquery.pjax.js
angehoben ausgeführt
if (fullDocument) {
var $head = $(parseHTML(data.match(/<head[^>]*>([\s\S.]*)<\/head>/i)[0]))
var $body = $(parseHTML(data.match(/<body[^>]*>([\s\S.]*)<\/body>/i)[0])) <-- error
} else {
var $head = $body = $(parseHTML(data))
}
Meine Ansicht des pjax
<?php Pjax::begin([
'id'=>'pjax-post-comments',
'timeout' => 5000,
'enableReplaceState'=>false,
'enablePushState'=>false,
'clientOptions' => ['backdrop' => 'static', 'keyboard' => false],
]);?>
<?php
$query = $model->findComments();
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 2, //for development reasons
],
]);?>
<div class='resp-col col-12 post-item-comment-history'>
<?=ListView::widget([
'dataProvider' => $dataProvider,
'summary'=>false,
'itemOptions' => [
'class' => 'comment-item'
],
'itemView' => '/frontend/comment/_item',
]);?>
</div>
<?php Pjax::end() ?>
Meine Ansicht ist Jquery Aufruf zum Neuladen der Pja x container:
$('#submit-comment').on('click',function(){
event.preventDefault();
var user_id = '<?=Yii::$app->user->identity->id?>';
var content = $('#comment-content').val();
var post_id = '<?=$model->id?>';
var associative_id = $(this).data('assoc-id');
$.post('/frontend/post/submit-comment', {
user_id : user_id,
post_id : post_id,
content : content,
associative_id: associative_id
}, function(response){
if(response['response'] == true){
$('#comment-content').removeClass('error-form');
$('#comment-content').addClass('success-form');
$(this).data('assoc-id','null');
$('#comment-content').val('');
$.pjax.reload({container:"#pjax-post-comments",timeout: 5000});
}
else{
alert(response['errors']);
$('#comment-content').addClass('error-form');
$('#comment-content').removeClass('succes-form');
}
});
});
Überprüfen Sie die Server-Antwort, ist es auch, dass containe haben? – Beowulfenator
Entschuldigung für die verspätete Antwort. Dein Kommentar wies mich in die richtige Richtung. Die pjax empfangene URL stimmt nicht mit der URL des Modals überein. Siehe meine Antwort für weitere Informationen. –