SyntaxError: JSON.parse

246
25 января 2018, 21:11

SyntaxError: JSON.parse: unexpected character at line 3 column 5 of the JSON data

получаю такую ошибку в этой функции. вот на эту строку var data = JSON.parse($("#dcsel").text());

$(document).ready(function() {
    $('.fetch-dc-block').click(function() {
        $.ajax({
            url : defaultPath + 'reports/getRCJson',
            cache : false,
            processData : false,
            type : 'GET',
            processData : false,
            contentType : "application/json;charset=UTF-8",
            success : function(response) {
                if (typeof response == "object") {
                    $('#dcsel').val('');
                    var data = JSON.parse($("#dcsel").text());
                } else {
                    alert('Ошибка!');
                }
            }
        });
    });
});

подскажите, что нужно исправить? в json приходят данные в виде

Map<String, List<Map<String, String>>> map

HTML код элемента #dcsel

<div class="fetch-dc-block col-xs-4" align="right" id="ds">
            <%
                if ((entry != null) && (entry.get("use_dc") != null) && (entry.get("use_dc").length() > 0)) {
            %>
            <select size="5" multiple="multiple" title="РЦ" id="dcsel"
                name="dcenters" align="right">
                <%

... %>

        <option <%if (sel) {%> selected <%}%> value="<%=dcEntry.get("id")%>"><%=dcEntry.get("name")%></option>
        <%
            }
        %>
    </select>
    <%
        }
    %>
</div>

код контроллера

    public void getRCJson(HttpServletRequest request, HttpServletResponse response) {
            DCManager dcm = new DCManager(pgCon); // запрос к БД
            Map<String, List<Map<String, String>>> map = new HashMap<>();
            map.put("dc", dcm.getAllDC());
            pgCon.closeConnection();
            try {
                JSONResponse.sendJSONRequest(request, response, map);
            } catch (IOException e) {
                Syslog.error(this, "Ошибка при отправке JSON ответа:" + e);
            }
        }
public static <T> void sendJSONRequest(final HttpServletRequest request,final HttpServletResponse response, T t) throws IOException {
        synchronized (response) {
            Gson gson = new Gson();
            response.setContentType("application/json");
            response.setCharacterEncoding("UTF-8");
            String dataJson = gson.toJson(t);
            PrintWriter pw = response.getWriter();
            try {
                synchronized (pw) {
                        pw.print(dataJson);
                        pw.close();
                }
            } catch (NullPointerException e) {
                Syslog.error(JSONResponse.class, "Ошибка при записи PrintWriter");
                e.printStackTrace();
            }
        }
    }
Answer 1

Данный метод разбирает JSON строку с последующим преобразованием в объект, у вас же приходит не JSON, соответственно она валится. Примеры корректных данных:

JSON.parse('{}');              // {}
JSON.parse('true');            // true
JSON.parse('"foo"');           // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null');            // null
JSON.parse('{"name":"Vasya", "surname": "Petrov"}'); 
/*{
     name: 'Vasya',
     surname: 'Petrov'
  }*/
READ ALSO
Импорт модуля noty js v2

Импорт модуля noty js v2

Не могу понять как правильно импортировать модуль?

265
Почему в браузере MS EDGE не работает метод addListener

Почему в браузере MS EDGE не работает метод addListener

В JS использую метод addListener, в браузере MS EDGE в консоле вылетает ошибка:

218
Как изменить bg при нажатии на кнопку?

Как изменить bg при нажатии на кнопку?

Такая проблемаЕсть кнопки категорий, у которых есть своё значение:

260
Стаж работы по договору [требует правки]

Стаж работы по договору [требует правки]

Как считается стаж при роботе в колхозе по договору?

221