【问题标题】:bootstrap typeahead in joomla not accepting source arrayjoomla中的bootstrap typeahead不接受源数组
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    代码是here

    工作的 Hello-Wolrd-Component 是 here:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多