AJAX | jQuery | Успешный блок не звонит | AEM - PullRequest
0 голосов
/ 18 июня 2020

Мой успешный блок вызова Ajax не обрабатывается. Прилагаю сюда свой код, не могли бы вы помочь в этом. JS Код: -

$(document).ready(function(){
    $('.form_table_action').submit(function() {
      var userName = document.getElementById("username").value;
      var password = document.getElementById("password").value;
        $.ajax({
            type: 'POST',
            url: '/bin/servlet/loginData',
            data: {
                    'username': userName,
                    'password': password,
                },
            success: function (data) {
                console.log('Login success');
                window.location = "http://localhost:4502/content/AEMTraining/en/loginsuccesspage.html?wcmmode=disabled";
            },
            error: function(jqXHR) {
                console.log('Error while login');
            },
            dataType: 'html'
        });
    });

});

Мой Java Код, который вызывается из ajax при входе в систему.

@Component(service= Servlet.class,
    property={
            Constants.SERVICE_DESCRIPTION + "=Login Servlet",
            "sling.servlet.methods=" + HttpConstants.METHOD_POST,
            "sling.servlet.paths="+ "/bin/servlet/loginData"
    })

publi c class LoginServlet extends SlingAllMethodsServlet {

/**
 * doPost method
 * @param request
 * @param response
 * @throws IOException
 */
@Override
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
    String userName = request.getParameter("username");
    String password = request.getParameter("password");
    String outputMsg = null;
    if((userName.equals("")) || (password.equals(""))){
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        outputMsg = "User name or password field can not my empty";
}
else {
        ResourceResolver resourceResolver=request.getResourceResolver();
        UserAuthentication authentication = new UserAuthentication();
        if (authentication.verifyUser(userName,password,resourceResolver)){
            response.setStatus(HttpServletResponse.SC_OK);
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            outputMsg = "Welcome ! You have successfully login";
        }
        else {
            response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
            outputMsg = "User name or password is wrong.";
        }
}
    response.getWriter().write(outputMsg);
}

Итак, я могу войти в систему и возвращающее сообщение (сообщение об успешном завершении) печатается на моей странице, но все, что я пишу в блоке успеха Ajax .. это не звонит.

1 Ответ

1 голос
/ 18 июня 2020

Выход из руководства по обновлению jquery:

Объект jqXHR, возвращенный из jQuery. ajax () - это jQuery Deferred и исторически имел три дополнительных метода с именами сопоставление объектов аргументов успеха, ошибки и завершения. Это часто сбивало с толку людей, которые не понимали, что возвращаемый объект следует рассматривать как отложенный. Начиная с jQuery 3.0 эти методы были удалены. В качестве замен используйте отложенные стандартные методы done, fail и always или используйте новые методы then и catch для Promises / A + соответствие .

Таким образом, вы можете выбрать либо используйте тот же стиль кодирования и «done» и «fail», либо вы хотите использовать обещание вместо «then» и «catch».

Источник:

https://jquery.com/upgrade-guide/3.0/#breaking -change-особый-случай-отложенные-методы-удалено-из- jquery - ajax

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