Почему мой весенний загрузочный контроллер не отображает новый вид после вызова ajax - PullRequest
0 голосов
/ 01 апреля 2020

Подобные вопросы уже задавались, например, этот Как мне вернуть представление из пружинного контроллера, используя запрос ajax? , однако ответы не дают мне никакого решения моей проблемы. Я также хочу добавить, что я новичок в развитии веб-интерфейса.

Моя проблема в том, что я вызываю метод контроллера с ajax -скриптом, и после вызова я хочу, чтобы пользователь был перенаправлен в другое представление из контроллера. Однако возвращенное представление не отображается в браузере, вместо этого браузер остается в представлении, из которого запущен скрипт.

Хотя кажется, что оператор return в контроллере работает каким-то образом, потому что в консоли браузера я вижу html, который должен отображаться в окне браузера.

Другая странная вещь заключается в том, что когда я вызываю другие контроллеры в моем проекте с параметрами через thymeleaf, возвращаемые представления отображаются так, как они должны.

Как я могу направить представление "recipesOverviewPage" из контроллера, чтобы оно отображалось в браузере, а не как html -tags в консоли.

Мой скрипт:

 const sendArray = function() {
            var ingredientNames = [];

            $('#insertedFoodsList li').each(function(index) {
                ingredientNames.push($(this).text());
            });

            ingredientNames = JSON.stringify({
                'ingredientNames': ingredientNames
            });

            $.ajax({
                url: "/foo",
                type: 'POST',
                data: ingredientNames,
                dataType: "html",
                contentType: 'application/json',
                mimeType: 'application/json',
                success: function(data) {
                    console.log(data);
                return false;
                }
            });
        };

Кнопка, которая запускает событие:

<div class="btn" value="Submit" onclick="sendArray();" style="margin-left: 9em">Generate recipe</div>

Контроллер:

@RequestMapping(value = "/foo", method=RequestMethod.POST)
    public String getSearchedRecipesFromIngredientInputField(@RequestBody RecipeSearchObject recipeSearchObject, Model model) {
model.addAttribute("recipeList",recipeService.getRecipesByIngredientList(recipeSearchObject.getIngredientNames()));
        return "recipesOverviewPage";
    }
...