javascript - Joomla Ajax jQuery

标签 javascript php jquery ajax joomla

您好!

我的 joomla 组件“自定义”分页有问题。

我想做一个用户文章列表,例如每页显示 3 个帖子。我的目标是在刷新网页的情况下进行分页。 Ajax 是最好的选择。我现在正在与它作斗争,并且遇到了迄今为​​止最困难的问题(我试图在几个小时内搜索我的问题的答案)。

user.php

    <div class="userRightContainer">
            <div class="blogArticlesBlock">
            <div class="userItemTagsBlock"><b>Debaty na forum użytkownika(<?php echo $joomla_rows; ?>)</b></div>

            <?//artykuly joomla
            ?>

        <div id="Joomla_block" class="Joomla_block">
            <? require_once("Db_joomla.php") ?>
        </div>

...
...
...

<script type="text/javascript">

function jm_previous(arg) {
    if(arg < 0)
        changePagination(0);
    else
    changePagination(arg);
}
function jm_next(argument) {
    changePagination(argument);
}

function changePagination(pageId){

                  // $("#Joomla_block").html('');
     jQuery.ajax({
           type: "GET",
           // url: "Db_joomla.php",
           url: window.location.href,
           data: { jm_start: pageId},
           success: function(result){
                  alert(result);
                   $("#Joomla_block").html(result);

           }
      });
}
</script>

Db_joomla.php

defined('_JEXEC') or die;
//
$offset_jm=$_GET["jm_start"];
if(empty($offset_jm)) $offset_jm=0;
//
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('id', 'title', 'introtext', 'created_by', 'state')));
$query->from($db->quoteName('#__content'));
$query->where($db->quoteName('created_by') . ' LIKE ' . $db->quote(JRequest::getInt('id')));
$query->where('state', '1');
$query->setLimit($joomla_page,$offset_jm);
$db->setQuery($query);
$joomla=$db->loadObjectList();
$joomla_rows = $db->loadResult();


if($joomla_rows > 0){
 foreach($joomla as $row) { 
 if ($row->created_by != JRequest::getInt('id')) continue;
?>
            <div class="articlesBlock" style="margin: 5px;">
                <!-- Avatar -->
        <img src="<?php echo $this->user->avatar; ?>" alt="<?php echo htmlspecialchars($this->user->name, ENT_QUOTES, 'UTF-8'); ?>" style="width:50px; height:auto;border: 1px solid #ccc; float:left;margin: 5px;" />
                    <div class="blogArticlestTitle" style="padding-left:60px;font-weight:bold;word-wrap:break-word;"><a href="index.php?option=com_content&view=article&id=<?php echo $row->id;?>"><?php echo $row->title ?></a></div>
                    <div class="blogArticlesDescription" style="padding: 5px;padding-top:10px;"><?php if (str_word_count($row->introtext) > 100) echo /* Wstawia komentarz i ogranicza tekst do stu znaków, po czym dodaje kropki.*/ substr(strip_tags($row->introtext), 0, 100) . "..."; else echo strip_tags($row->introtext);?>
                    </div>
                    <div class="CommentViewMore">
                    <a href="index.php?option=com_content&view=article&id=<?php echo $row->id;?>">Przejdź do artykułu ›</a>
                    </div>
                </div>
<?php
/*
    $item_counting++;
    if($item_counting == 5) break;*/
                        }


//echo $pageNav->getListFooter(  ); //Displays a nice footer
        ?>
<ul class="pager">
    <li><a href="javascript:void(0)" id="jm_previous" onclick="jm_previous(<? echo $offset_jm-$joomla_page; ?>)" style="background-color: #000;float:left;"><<</a></li>
    <li><a href="javascript:void(0)" id="jm_next" onclick="jm_next(<? echo $offset_jm+$joomla_page; ?>)" style="background-color: #000;float:right;">>></a></li>
</ul>
    <a class ="view_more_link"href="http://konfederaci.pl/index.php/component/komento/profile/id/<?php echo JRequest::getInt('id');?>" title="Artykuły użytkownika">Zobacz wszystkie artykuły</a> 
    <?php
    } 
        else
{

    echo "Ten użytkownik nie posiada żadnych postów na forum.";
}

现在一些图片:

From alert(result)

From google chrome's console

注意: 如果我在此脚本中选择“url:”Db_joomla.php“它不会做任何事情。仍然不起作用(和相同的异常)。

最佳答案

依赖 Joomla 的 Ajax 界面总是比实现您的界面更好。它 super 简单,非常高效,而且有效。我们已经写了如何使用它 here .

基本上,您将创建/修改一个简单的模块,该模块将包含一个用于处理调用的函数(名称末尾有 Ajax 一词)。

然后,您需要添加一个简单的 jquery 代码,该代码将通过 com_ajax 接口(interface)调用该模块。请注意,您需要确保将模块分配给菜单项,因为您需要该菜单项的 ID 才能进行 ajax 调用。

关于javascript - Joomla Ajax jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38339248/

相关文章:

javascript - 谁能解释一下这个循环是如何达到如此高的基准的?

php - 将网站重定向到移动网站以及从移动网站重定向到桌面网站?

php - 如何从 4 列中有 3 列具有相同值的表中进行选择?

jquery - 悬停效果(淡入淡出图像)方向

javascript - 非 Jade Node 的模板引擎

javascript - AngularJS 1.5.4 无法使用 bootstrap-ui 模块

javascript - 如何在加载头部之后但在 DOM 之前立即运行脚本?

php - 如何使用 Zend_Mail_Protocol_Imap 或 Zend_Mail_Storage_Imap 批量检索电子邮件

javascript - 如何在jquery中的esc按键上隐藏div数组

c# - 如何在 javascript asp.net c# 中检查日期和时间?