在Joomla中,为什么在模块中使用时打字会中断?

时间:2017-10-24 07:39:54

标签: php joomla

将Joomla 3.7.5版与Wright模板一起使用。

我在左侧边栏中有一个模块,它有2个预先输入字段从本地数据库获取数据。使用include_once通过sourcerer插件引用php代码。

在模块中使用时,预先输入不起作用。但是 - 如果我在文章中使用完全相同的代码,则typeahead可以正常工作。

文章和模块的加载/行为有何不同?如果有人能解释这种行为,我将不胜感激。

代码的相关部分如下。

PHP - 第一行代码是:

JHtml::_('script', './templates/js_wright/wright/js/jquery.js');
JHtml::_('script', './styling/bootstrap3-typeahead.min.js');
$document->addStyleSheet("./media/jui/css/bootstrap.css",'text/css',"screen");

HTML - 格式为:

<div class="input-prepend span8"><span class="add-on" ><i class="icon-map-marker" ></i></span><input autocomplete="off" style="border-color:#F7980F;" class="typeahead" id="inputIcon" type="text" name="collectionpoint"  /></div>

Javascript:

$('input.typeahead').typeahead({
        source:  function (query, process) {
        return $.get('./towns.php', { query: query }, function (data) {
                console.log(data);
                data = $.parseJSON(data);
                return process(data);
            });
        }
    });

和towns.php:

$sql = "SELECT Town FROM lkp_towns 
        WHERE Town LIKE '%".$_GET['query']."%'
        LIMIT 5"; 
        $result = $mysqli->query($sql);

        $json = [];

        while($row = $result->fetch_assoc()){
             $json[] = $row['Town'];
        }
        echo json_encode($json);

1 个答案:

答案 0 :(得分:0)

完成了工作。

Joomla没有将模块视为单独的页面,而是作为主页面的嵌套div。

将以下行移至模板显示的主要文章页面解决了问题,因为在加载任何其他内容之前需要引用.js:

从模块中删除了它并将其包含在文章中:

WebView