我在 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 问题、我的代码还是其他问题。