Я хочу отправить строку запроса в конец после 3 символов, и результаты используются для typeahead .
В настоящее время я получаю данные обратно, без ошибок на консоли,но нет никаких предложений в типе впереди.Внутренняя часть - подпружиненная загрузка.
Возможно, это связано с областью действия массива данных, но я не уверен.
КОД:
// doc ready....
$('#queryStation').keyup(function() {
var stationName = $(this).val();
if(stationName.length==3){
ajax_search(stationName);
}
});
function ajax_search(stationName){
var stationJson = '{ "name":"' +stationName+ '"}'
$.ajax ({
url: "/station",
type: "POST",
data: stationJson,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data){
$('#queryStation').typeahead({
source: data
});
}
});
}
и html snip:
<div class="col-md-5">
<label class="control-label control-label-left">Station</label>
<input type="text" class="form-control typeahead" name="query" id="queryStation" placeholder="Type Station" data-provide="typeahead" autcomplete="off">
</div>
Массив объектов, отправляемых обратно в данные, выглядит как [ {id:237, name:"LAX"},{id:155,name:"SFO"}....
Это работало, когда я использовал $ .get вместо ajax POST:
$.get("/station", function(data) {
console.log(data);
$("[name='query']").typeahead({
source: data,
minLength: 3
});
}, 'json');
Данные, возвращаемые при использовании $ .get, выглядели как [{"id":1,"name":"LAX","}...
- я вижу, что имена ключей теперь заключены в ".
UPDATE
Похоже, проблема в том, как данные возвращаются с сервера:
data = [{"id":113,"name":"LAX"}] // Works - $.get
data = [{id:113,name:"LAX"}] // Does not work - $.ajax with POST
data = "[{"id":113,"name":"LAX"}]" // Does not work - JSON.stringify result
Так что, чтобы заставить его работать, кажется, что объекту подпружиненной загрузки, отправляемому обратно, нужны ключизавернутые в кавычки. Как это сделать?