Как получить данные из ResponseEntity, когда запрос успешно в AJAX? - PullRequest
0 голосов
/ 26 декабря 2018

Итак, у меня есть контроллер весенней загрузки и функция ajax для получения данных ответа, после того как я получу ответ в моем успехе ajax, но данные не определены, однако статус HTTP равен 204, что хорошо, но почему данныене определено и как получить его в моем AJAX для доступа к свойству в моем объекте, который я хочу получить?

Мой контроллер

@DeleteMapping(value = "/**/delete/{id}")
public ResponseEntity<?> delete(@PathVariable Integer id) {
    Optional<Offer> optional = this.offerRepository.findById(id);
    if (optional.isPresent()) {
        this.offerRepository.deleteById(id);
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.setContentType(MediaType.APPLICATION_JSON_UTF8);
        Offer offer = optional.get();
        return new ResponseEntity<Offer>(offer, responseHeaders, HttpStatus.NO_CONTENT);
    } else {
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.setContentType(MediaType.TEXT_HTML);
        String msg = "Offer is not found";
        return new ResponseEntity<String>(msg, responseHeaders, HttpStatus.NOT_FOUND);
    }
}

Мой AJAX

$.ajax({
    url: "/" + currentUserRoleName + '/delete' + "/" + offerIdValue,
    scriptCharset: 'UTF-8',
    method: 'DELETE',
    success: function (data, textStatus, jqXHR) {
        console.log(data); // get undefine
        console.log(jqXHR.status); //status is 204
        var offer = $.parseJSON(data.responseText); //here error call of undefine
        if (jqXHR.status === 204 || jqXHR.status === 200) {
            // var id = offer.id;
            var selector = "input#offerHiddenId[value =  '" + offerIdValue + " ']";
            var hiddenInputWithOfferId = $(".main_out_wrapper_user_offers").css(selector);
            var parent = hiddenInputWithOfferId.closest("div.inner_main_out_wrapper_user_offers");
            parent.empty();
            $("#no").click();
        } else {
            alert("Can't delete the offer");
        }
    },
    error: function (data) {
        alert(data.responseText);
        var div = $.createElement("div");
        var span = $.createElement("span");
        span.innerHTML = "Offer is not found";
        div.appendChild(span);
        div.fadeIn(1000, function () {
            div.fadeOut(1000);
        });
    }
});

Librery для spring-boot для преобразования объекта в формат JSON в pom.xml

<properties>
    <jaction.xml.version>2.9.6</jaction.xml.version>
</properties>

    <!--FOR JSON-->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jaction.xml.version}</version>
    </dependency>

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jaction.xml.version}</version>
    </dependency>

Я попытался удалить предложение из базы данных и отправил запрос со своей страницы, а предложение было удалено из базы данныхОднако с ответом не так хорошо, когда я отправляю новый ResponseEntity (msg, responseHeaders, HttpStatus.NOT_FOUND), я все еще получаю неопределенные данные в моей функции ajax.

Я хочу получить объект предложения в формате JSON в формате ajax для доступа к идентификатору из объекта предложения.

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