У меня проблема с вводом Bootstrap v2.3.1 в Joomla 1.5 - он отлично работает только тогда, когда я использую метод 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>
а вот упрощенный source.php, который выводит массив в кодировке json:
//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) мог правильно угадать правильный тип данных? - person pickypg   schedule 17.04.2013application/json
перед отправкой каких-либо выходных данных клиенту. - person pickypg   schedule 18.04.2013