【发布时间】:2013-04-07 19:36:49
【问题描述】:
我在 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 问题、我的代码还是其他问题。
【问题讨论】:
-
您确定应该是
POST请求吗?另外,您是否将内容类型设置为application/json以便浏览器(和 jQuery)可以正确猜测正确的数据类型? -
我认为,我将问题缩小到多个 jquery/mootools 负载。似乎无法解决它,因为 joomla 需要这些库才能工作,甚至 noconflict 方法都无法解决这个问题。我似乎无法让任何 jquery ajax 查询正常工作,我还在摆弄......:/
-
我对 Joomla 或 Mootools 不熟悉,但我找到了 this article,这可能会对您有所帮助。如果您确实尝试返回 JSON 数据,则必须将返回的 Content Type 标头设置为
application/json在向客户端发送任何输出之前。
标签: jquery joomla1.5 bootstrap-typeahead