2015-03-16 2 views
0

Я использую Typeahead для создания текстового окна поиска автозаполнения, а выпадающие результаты отображаются как неопределенные. По-видимому, PHP действительно создает JSON, я его протестировал. Проблема может быть неправильным типом JSON. Вот PHP:Typehhead Bloodhound, показывающий результаты как неопределенные. Неверный тип JSON?

$a_json = array(); 
$a_json_row = array(); 

while ($row = mysql_fetch_assoc($sql)) { 

    //Replaces spaces for + 
    $searchTerm = preg_replace('/\s/', '+', $row['products_keyword']); 

    $a_json_row["search"] = $searchTerm; 
    $a_json_row["label"] = $row['products_keyword']; 
    array_push($a_json, $a_json_row); 
} 

echo json_encode ($a_json); //Return the JSON Array 

А вот сценарий:

$(document).ready(function() { 
    var keywordsVar = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('label'), 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    remote: 'keywords.php?query=%QUERY' 

    }); 

    keywordsVar.initialize(); 
    $('#idkeywords').typeahead({ 
    hint: false, 
    highlight: true, 
    minLenght: 2 
    }, { 
    name: 'keywords', 
    displaykey: 'label', 
    source: keywordsVar.ttAdapter() 
    }); 
}); 

Вот пример JSON:

[{"search":"Artichokes","label":"Artichokes"}, 
{"search":"Artichokes+2","label":"Artichokes 2"}, 
{"search":"Artichokes+3","label":"Artichokes 3"}] 

Можно ли определить проблему ??

+0

Добавить сообщение об ошибках в верхней части файла (ов) сразу после открытия '

+0

' echo json_encode ($ a_json); // Вернем JSON Array' - неправильно, он возвращает json объекта. 'json_encode ($ a_json, true);' возвращает json из массива –

+0

Не является ошибкой php, я полагаю, что это связано с тем, что я возвращаю (объекты, массивы?) – waldon

ответ

1

У вас есть опечатка в декларации типа. Он должен быть displayKey с заглавной буквы k.

Вот Reference

+1

LOL, вот и все. Полдня выбросили! Благодаря! – waldon