Получение ответа в виде текста с использованием jquery - PullRequest
0 голосов
/ 07 марта 2020

Я могу отобразить ответное сообщение об ошибке обратно, как и ожидалось, но я не могу отобразить ответное сообщение в виде текста, когда статус ответа 200 OK и когда вызывается функция success, на $("#messageDisplay"); ничего не выводится или $(".messages").

Вот код для кнопки «Купить»

$("#makePurchase").on("click", function () {
        var id = $("#itemId").val();
        var amount = $("#totalAmountIn").val();
        var message = $("#messageDisplay");
        var change = $("#changeAmount");

        $.ajax({
            type: 'GET',
            url: 'http://localhost:8080/money/' + amount + '/item/' + id,
            success: function (response) {
                message.val("Thank you!!!");

                var amountChange = $.parseJSON(response.responseText);

                $.each(amountChange, function (key, value) {
                    if ($.isPlainObject(value)) {
                        $.each(value, function (key, value) {
                            $(".messages").addClass("alert alert-danger");
                            $('.messages').show().append(value + "<br/>");
                        });
                    } else {
                        change.val(value);
                    }
                })
            },
            error: function (response) {
                var errors = $.parseJSON(response.responseText);

                $.each(errors, function (key, value) {
                    if ($.isPlainObject(value)) {
                        $.each(value, function (key, value) {
                            $(".messages").addClass("alert alert-danger");
                            $('.messages').show().append(value + "<br/>");
                        });
                    } else {
                        message.val(value);
                    }
                })
            }

        })

    })

HTML:

<div class="col-md-4">
                <h1>Message</h1>
                <div class="messages"></div>
                <input type="text" value="" id="messageDisplay" readonly="readonly"></input>

                <h3>Item:</h3> 
                <input type="text" value="" id="itemId"></input>
                <div class="col-md-4">
                    <button type="button" id="makePurchase" class="btn btn-default">
                        Make Purchase
                    </button>
                </div>

            </div>

            <div class="col-md-4">
                <h1>Change</h1>
                <input type="text" value="" id="changeAmount" readonly="readonly"></input>
                <div class="col-md-4">
                    <button type="button" id="addDime" class="btn btn-default">
                        Change Return
                    </button>
                </div>
            </div>
        </div>

Вывод ответа: {"quarters":2,"dimes":0,"nickels":0,"pennies":0} при статусе ответа 200 ХОРОШО. Как вы можете видеть в консоли, идентификатор равен 1, и отображается ответ. Нет необходимости выводить значения 0, но я по крайней мере хочу знать, как отобразить этот ответ?

enter image description here

Ошибка консоли сообщение:

Uncaught SyntaxError: Unexpected token u in JSON at position 0
    at JSON.parse (<anonymous>)
    at Function.n.parseJSON (jquery-2.2.4.min.js:4)
    at Object.success (home.js:37)
    at i (jquery-2.2.4.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-2.2.4.min.js:2)
    at z (jquery-2.2.4.min.js:4)
    at XMLHttpRequest.<anonymous> (jquery-2.2.4.min.js:4)
n.parseJSON @ jquery-2.2.4.min.js:4
success @ home.js:37
i @ jquery-2.2.4.min.js:2
fireWith @ jquery-2.2.4.min.js:2
z @ jquery-2.2.4.min.js:4
(anonymous) @ jquery-2.2.4.min.js:4
load (async)
send @ jquery-2.2.4.min.js:4
ajax @ jquery-2.2.4.min.js:4
(anonymous) @ home.js:31
dispatch @ jquery-2.2.4.min.js:3
r.handle @ jquery-2.2.4.min.js:3

1 Ответ

0 голосов
/ 07 марта 2020

Если вы ожидаете JSON, не анализируйте текст.

Измените эту строку:

var amountChange = $.parseJSON(response.responseText);

На:

var amountChange = $.parseJSON(response);

Знайте, что ваш результат изменения покажет 0, потому что пенни является последней парой ключ / значение в l oop на amountChange. Вы можете изменить значение пенни, скажем, на 5, и вы увидите разницу.

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