jquery load -> 不加载特定的 PHP 文件,而是加载网页 2 次 (yii2)



我在使用 jquery load 时遇到了一点问题。我正在使用 yii 框架 (yii2(,想做一个简单的:

  • 不要从一开始就
    加载所有项目
  • 仅当按下时加载更多:再加载三个项目

这一切看起来都像这样:

主.php

标准 YiII2 布局主.php

内容.php

<?php
/* @var $this yiiwebView */
use yiihelpersHtml;
use yiihelpersStringHelper;
$this->title = 'Website';
?>
<div id="postItems">
<?php
$px=0;
?>
<?php foreach ($dataProvider->getModels() as $i => $model) { ?>    
<?php if($px==5) {break;} ?>
<?php $px++ ?>
<div id='<?php echo Html::encode($model->id) ?>' class="col-lg-4 cc2" >
<h2><?php echo Html::encode($model->title) ?></h2>
<small class="text-muted ca">Created at: <?php echo Yii::$app->formatter->asDate($model->created_at) ?></small>
<div >
<?php echo StringHelper::truncateWords(Html::tag('p', Html::encode($model->body), [ 'class'=> 'fob']), 20) ?>
</div>
</div>
<?php } ?>
</div>
<div class="cbtn ">
<a class="btn btn-success pi-load">Load more</a>
</div>
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam gravida, nisl sit amet commodo ullamcorper, enim risus blandit leo, eu dapibus eros nisl eu lacus. Sed at eros id magna bibendum euismod. In hac habitasse platea dictumst. Aliquam sed diam a orci aliquam efficitur. Ut quis feugiat ligula. Curabitur non malesuada nisi. Pellentesque tempor mollis arcu et facilisis. Nullam a iaculis mi. Nulla pharetra vestibulum ultricies. Praesent eu sem pretium, malesuada ipsum eu, rhoncus ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur rhoncus diam ut ex vulputate sagittis a in nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris lobortis varius dolor a porttitor.<p>
</div>

js 文件(通过应用资产链接(

$(document).ready(function() {
var pitemCount = 5;
$(".pi-load").click(function(){
pitemCount = pitemCount + 3;
$("#postItems").load("load-postItems.php", {
pitemNewCount: pitemCount
});
});
});

加载发布项目.php

<?php
$px=0;
$pitemNewCount= $_POST['pitemNewCount'];
?>
<?php foreach ($dataProvider->getModels() as $i => $model) { ?>    
<?php if($px==$pitemNewCount) {break;} ?>
<?php $px++ ?>
<div id='<?php echo Html::encode($model->id) ?>' class="col-lg-4 cc2" >
<h2><?php echo Html::encode($model->title) ?></h2>
<small class="text-muted ca">Created at: <?php echo Yii::$app->formatter->asDate($model->created_at) ?></small>
<div >
<?php echo StringHelper::truncateWords(Html::tag('p', Html::encode($model->body), [ 'class'=> 'fob']), 20) ?>
</div>
</div>
<?php } ?>

现在,问题是,它不是加载具有较高项目计数的php(load-postItems.php(文件,而是似乎第二次加载整个页面(main.phpcontent.php(。

我不知道是我忽略了什么,还是这是 yii(2( 框架阻止了操作。但总的来说,我对我能得到的所有帮助感到高兴。

编辑#1:

我尝试@Jay Blachard 指定它的方式,它工作到它没有再次加载整个页面,但反过来它也没有加载指定的部分。

我将查看日志并尝试通过它来理解一些意义。

你应该创建一个 URL,只吐出相关的 HTML 位,禁用任何模板等。听起来您正在调用整个页面,其中包括您的 html 模板等。创建另一个终结点,而不是解析完整的 HTML 以获取所需的位。

更好的是,如果 enpoint 返回一个 JSON 对象,然后你可以在 JS 中构建元素。

最新更新