Плагин опережающего ввода, не распознающий POST-ответ - PullRequest
0 голосов
/ 08 мая 2019

Моя конечная точка Spring-boot POST возвращает данные, которые не работают с плагином впереди , который я использую.Это работает, когда я использую GET.

Эта конечная точка GET отлично работает:

@RequestMapping(value = "/station", method = RequestMethod.GET)
public @ResponseBody List<Station> getstation() {
    List<Station> listStation = stationService.findAll();
    return listStation;
}

с этим javascript:

    $.get("/station", function(data) {
    console.log(data);
    $("[name='query']").typeahead({
        source: data,
        minLength: 3
    });
}, 'json');

Возвращенные данные выглядят как [{id:123,name:"ABC"}].

Если я попытаюсь использовать конечную точку POST:

@RequestMapping(value = "/findstation", method = RequestMethod.POST)
public @ResponseBody List<Station> findstation(@RequestBody Station jsonSearchString) {
    List<Station> listStation = stationService.stationContaining(jsonSearchString.getName());
    return listStation;
}

с javascript:

    $('#queryStation').keyup(function() {
    console.log("in change function statoion oc");
    var stationName = $(this).val();
    if(stationName.length==3){
        console.log("the length statement is true");
        ajax_search(stationName);
    }
});

function ajax_search(stationName){
    console.log("search function value " +stationName);
    var stationJson = '{ "name":"' +stationName+ '"}'
    $.ajax ({
        url: "/findstation",
        type: "POST",
        data: stationJson,
        dataType: "json",
        contentType: "application/json;",
        success: function(data){
        console.log("inside success handler");
            stationTypeahead(data);
        }
    });
}

function stationTypeahead(data){
    console.log(data);
    $('#queryStation').typeahead({
        source: data
    });
}

Возвращает JSON как [{id:123, name:"LAX"}] - который, похоже, не работает с плагином,typeof data; возвращает объект.

Если я жестко кодирую, например, data = [{"id":123,"name":"ABC"}], это работает с плагином.

Я почти уверен, что HTML работает нормально, так как работает с GET.

Чего мне не хватает?

ОБНОВЛЕНИЕ

Тип: object для POST и GET.

1 Ответ

0 голосов
/ 08 мая 2019

Изменен код:

function stationTypeahead(data){
    $("[name='query']").typeahead({
        source: data,
        minLength: 2
    });
}

HTML

<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>

Я не знаю почему, но когда я выбрал плагин typeahead , используя атрибут имени jquery для селектора, он работал. С объектом, возвращенным с сервера, ничего не случилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...