Javascript typeahead после 3 символов - PullRequest
1 голос
/ 07 мая 2019

Я хочу отправить строку запроса в конец после 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

Так что, чтобы заставить его работать, кажется, что объекту подпружиненной загрузки, отправляемому обратно, нужны ключизавернутые в кавычки. Как это сделать?

...