Динамическое поле выбора с использованием ajax и servlet - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь создать динамическое поле выбора на форме, когда я выбираю элемент в первом поле выбора, ajax должен вызвать массив списков и поместить его во второе поле выбора.Это мой jsp файл

<!DOCTYPE html>
<html lang="en">
<head>
    <title>SO question 4112686</title>
    <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script src="ajax.js"></script>
</head>
<body>
    <form method="get" action="GetUserServlet">
        <select id="userSelect" name="user">
            <option id="aUser" value="" disabled selected>USUARIO</option>
            <option id="aUser" value="1">User 1</option>
            <option id="aUser" value="2">User 2</option>
            <option id="aUser" value="3">User 3</option>
        </select>
        <br>
        <select id="items" name="items">
            <option value='' disabled selected>ITEM</option>
        </select>
        <br>
        <button type="submit" id="somebutton">press here</button>
    </form>
</body>
</html>

, и это мой метод doGet для моего файла GetUserServlet сервлета

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ArrayList<String> list = new ArrayList<>();
    list.add("item1");
    list.add("item2");
    list.add("item3");
    String usuario = request.getParameter("user");
    System.out.println(usuario);

    if(usuario.equals("1")) {
        list.clear();
        list.add("item9");
        list.add("item19");
    }

    String json = new Gson().toJson(list);

    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(json);
}

Я использую условное выражение, чтобы проверить, является ли он первым пользователем, y просто показать наполе выбора, item9 и item19.

И это мой файл ajax.js

$(document).on("change", "#userSelect", function(responseJson) {
var user = $("#userSelect").val();
$.ajax({
    url: 'GetUserServlet',
    type: 'get',
    data: {user:user},
    dataType: 'json',
    complete:function(){
        $.get("GetUserServlet", function(responseJson) {
            $("#items").empty();
            $("<option value='' disabled selected>ITEM</option>").appendTo($("#items"))
            $.each(responseJson, function(index, item) {
                $("<option value='" + item + "'>").text(item).appendTo($("#items"));
            });
        });
    },
});
});

У меня есть метод ajax для отправки параметра пользователя сервлету, а внутри у меня есть$ .get, чтобы получить массив из сервлета и поместить значения параметров в поле выбора.И когда я выбираю user1, это никогда не дает мне правильный массив.

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