0

我在 Joomla 1.5 中使用 Bootstrap v2.3.1 typeahead 的问题 - 只有当我在输入标签内使用 data-source='["..."]' 方法时它才能正常工作,但不会接受远程 php 生成的 mysql json 编码的查询。

这是我的代码,从教程中复制:

<input type="text" id="search" data-provide="typeahead"/>
<script>    
$(function(){
    $("#appendedInputButton").typeahead({
        source: function(query, process) {
            $.ajax({
                url: 'http://www.mydomain.com/source.php',
                type: 'POST',
                data: {q: query},
                dataType: 'JSON',
                async: true,
                success: function(data) {
                    process(data);
                }
            })
        }
    })
})
</script>

这是输出 json 编码数组的简化 source.php:

//joomla required stuff   
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__) );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$db = &JFactory::getDBO();

$array = array();
$array[] = "item1";
$array[] = "item2";
$array[] = "item3";
//this is just for testing

echo json_encode($array);

我在按钮单击后使用简单的 jQuery ajax 加载测试了输出,它打印出数组,但我无法让它与 typeahead 一起使用。另外 - 如果我像这样提供数组,typeahead 甚至都不起作用:

var colors = ["red", "blue", "green", "yellow", "brown", "black"];
$('#search').typeahead({source: colors});

感谢您提供任何帮助 - 我不知道这是 Joomla 问题、我的代码还是其他问题。

4

2 回答 2

0

对于任何考虑这一点的人 - 我无法在我的 joomla 1.5 站点中使引导预输入工作,而是使用 typeahead.js,它工作正常 >链接

于 2013-04-21T14:40:36.963 回答
0

可能有点晚了,但是:实际上,它运行良好(Joomla!3.9.4,Bootstrap 3),您必须实例化 JoomlaJResponseJson类才能获得 json 编码的数据。

所以,而不是 this echo json_encode($array);,你应该这样写:

 $data = new JResponseJson($array);
 echo $data;

代码在这里

工作的 Hello-Wolrd-Component 在这里

于 2019-10-03T14:38:13.280 回答