【问题标题】:Retrieve data from phalcon controller with jquery使用 jquery 从 phalcon 控制器中检索数据
【发布时间】:2017-11-20 07:19:42
【问题描述】:

我正在学习“https://www.youtube.com/watch?v=V_qZOaGSEQE”的教程。我想用 jquery 在 phalcon 中实现自动分页。 自动滚动正常工作,没有任何错误,但问题是我不明白如何使用 phalcon 将查询数据传递给 jquery。 这就是为什么总是有 5 个数据连续渲染并且它的数据相同。我的意思是总是一次又一次地渲染 1-5。 有人请帮帮我...!我怎样才能通过自动分页正确检索数据。

[控制器]

namespace Multiple\Frontend\Controllers;
use Phalcon\Paginator\Adapter\Model as paginator;

public function postloaderAction()
 {
    $numberPage = $this->request->getPost("page", "int",1);
    $record_per_call = 5;
    $offset = ($numberPage - 1) * $record_per_call;
    $bloger = Blogs::find(array("limit" => array("number" => $record_per_call, "offset" => $offset), "order" => "datetime DESC"));
    foreach($bloger as $blog)
    {
        echo('<div> <h1><a href="blog/details/'.$blog->id.'">'.$blog->blog_title.'</a></h1><img src="uploads/blogs/'.$blog->blog_image.'"/></div>');
    }
 }

 public function indexAction()
 {
    if($this->request->isAjax())
    { 
        echo($this->view->getRender('blog', $this->postloader())); 
        return false;
    }
 }

['主布局视图/Jquery']

var page = 1;
mycontent(page);
$(window).scroll(function(){
   if($(window).scrollTop() + $(window).height() > $('.blogItems').height()) 
   {
    page++;
    mycontent(page);
   }
});
function mycontent(page)
{
    $('.loader_msg').html('Loading Expansion...');
    $.post('blog/postloader',{page:page}, function(data){
        if(data.trim().length == 0)
        {
          $('.loader_msg').html('No Data Found');  
        }
        $('.blogItems').append(data);
       // $('.animate').animate({scrollTop:$('.loading').offset().top}, 1000);
        $('.loader_msg').hide();  
    });
}

[博客视图]

<div class="blogItems">
    <p class="loader_msg"></p>
</div>

[输出]

【问题讨论】:

    标签: javascript php jquery mysql phalcon


    【解决方案1】:

    这只是因为每次您尝试获取具有限制的数据时 find 每次都会给您前 5 条记录,您必须提供限制和偏移量才能获得下一个 n 结果,并且在 Phalcon 中没有直接的方法来给出限制和偏移量,所以你必须以这种方式编码。

    <?php
    public function postloaderAction()
    {
        $numberPage = $this->request->getPost("page", "int",1);
        $record_per_call = 5;
        $offset = ($numberPage - 1) * $record_per_call;
        $bloger = Blogs::find(array("limit" => array("number" => $record_per_call, "offset" => $offset), "order" => "datetime DESC"));
        foreach($bloger as $blog)
        {
            echo('<div> <h1><a href="blog/details/'.$blog->id.'">'.$blog->blog_title.'</a></h1><img src="uploads/blogs/'.$blog->blog_image.'"/></div>');
        }
    }
    

    这肯定对你有用。

    【讨论】:

    • 按 DECS 排序,它只渲染 5 个数据,而不是 6、7、8 等等......仍然和以前一样!如果你请看“youtube.com/watch?v=V_qZOaGSEQE”链接查询。实际上我需要像 phalcon 的例子一样查询。它也没有停止。
    • :@Akshay Singhai - 你测试过代码吗?或者您是否观看了他们如何查询的视频链接?
    • 我已经尝试了我的数据库记录代码,即 public function testAction() { print_r(json_encode(CityList::find(array("limit" => array("number" => 5, “偏移” => 5))))); $this->view->disable(); } 让我检查 Order by 并通知您
    • 如果您也将使用 Orderby,那么它将首先根据顺序排列记录,然后应用限制和偏移量,这样您将获得记录,但顺序相反,无论您得到什么通过 MySQL 查询。
    • 在您的视图页面中,您将数据作为 POST 参数发送,而在控制器操作中,您尝试获取 GET 参数,因此您需要将 getQuery 更改为 getPost
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    相关资源
    最近更新 更多