@parkito

Как установить связь между jpa и ajax?

Здравствуйте. Помогите, пожалуйста решить проблему.

Есть форма, она вызывает javascript

<form name="test" onclick="unblock()">
                        <button type="submit" class="btn btn-success">unblock</button>
                    </form>


Я хочу, чтобы в эту функцию передалось значение из jsp

<%contracts.get(i).getNumber();%>

Однако вот так не срабатывает
<form name="test" onclick="unblock(<%contracts.get(i).getNumber();%>)">
                        <button type="submit" class="btn btn-success">unblock</button>
                    </form>


Сам скрипт
<script>
                    function unblock(id) {
                        popBox();
                        function popBox() {
                            x = confirm('Are you sure?');
                            if (x == true) {
                                var xhr = new XMLHttpRequest();
                                var id = 1;
                                xhr.open("POST", "/user/NumberOperations?unblockItem=" + id, true);
                                xhr.send();
                            }
                        }
                    }</script>


через параметры запроса пробовал - не получается.
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
EugeneP2
@EugeneP2
Java Dev
onclick="unblock(<%=contracts.get(i).getNumber();%>)" в дескриптере пропустили знак равно.

function unblock() { - наверно функция должна принимать number или id?

function unblock(id) {

Сообщить об успешности или не успешности операции на сервере можно с помощью кода статуса в ответе от сервера.

Например операция удаления

Сервлет
@WebServlet("/test")
public class TestServlet extends HttpServlet {

    private static final Logger LOG = LoggerFactory.getLogger(TestServlet.class);

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("/test.jsp").forward(req, resp);
    }

    @Override
    protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            long id = Long.parseLong(req.getParameter("id"));
            testRemove(id);
            resp.setStatus(200);
        } catch (Exception e) {
            LOG.error("Error remove: {}", e.getMessage());
            resp.setStatus(500);
        }
    }

    private void testRemove(long id) {
        if (id < 1) {
            throw new RuntimeException("id can't be < 1");
        }
    }
}


JSP старница
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<p>
    <input type="button" value="remove data (OK)" onclick="remove(2)"/>
</p>


<p>
    <input type="button" value="remove data (ERROR)" onclick="remove(-1)"/>
</p>


<script>
    function remove(id) {

        var request = new XMLHttpRequest();

        request.open('DELETE', '/test?id=' + id, false);
        request.send();

        if (request.status == 200) {
            alert('Данные упешно удалены')
        } else {
            alert('Ошибка удаления данных!');
        }
    }
</script>

</body>
</html>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы