Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Ajax jQuery и parseerror (https://javascript.ru/forum/jquery/68512-ajax-jquery-i-parseerror.html)

BIGserg 20.04.2017 20:51

Ajax jQuery и parseerror
 
Здравствуйте! Давно уже сталкиваюсь с ошибкой parseerror при отправке json через ajax

var send_data = {get_data: 1};
        
        $.ajax({
            type: 'POST',
            url: '/wash/get_data_service_old',
            dataType:'json',
            data: send_data,
            complete: function(val1, val2) {
                alert(val2);
            },
            success: function(data) {
                console.log(data);
            }
        });

Алерт возвращает нам parseerror, в чем проблема никак не могу понять...

Nexus 20.04.2017 20:59

Возможно проблема в том, что сервер возвращает невалидный json.
Т.к. dataType указан как json, то jq пытается сразу пропарсить ответ и вернуть объект, не строку, а т.к. ответ сервера невалидный, то jq и выкидывает сообщение об ошибке.

Можно dataType закомментировать и самостоятельно попытаться распарсить ответ сервера, чтобы убедиться в написанном мною, либо опровергнуть это.

BIGserg 24.04.2017 14:41

Цитата:

Сообщение от Nexus (Сообщение 450481)
Возможно проблема в том, что сервер возвращает невалидный json.
Т.к. dataType указан как json, то jq пытается сразу пропарсить ответ и вернуть объект, не строку, а т.к. ответ сервера невалидный, то jq и выкидывает сообщение об ошибке.

Можно dataType закомментировать и самостоятельно попытаться распарсить ответ сервера, чтобы убедиться в написанном мною, либо опровергнуть это.

Нет, если убрать тип данных json то все работает, но это не потому, что сервер возвращает некорректный тип данных, а потому, что скорее всего что то с теми данными которые я пытаюсь отправить. Даже если специально подготовить валидный ответ от сервера в качественном json формате то ошибка будет сохраняться.

Есть некоторые посты которые утверждают, что такая проблема вызывается только в браузерах chromium и вызвана символами табуляции в json запросе на сервер.

Nexus 24.04.2017 14:47

BIGserg,
encodeURIComponent
не пробовали использовать?

BIGserg 24.04.2017 14:52

Цитата:

Сообщение от Nexus (Сообщение 450894)
BIGserg,
encodeURIComponent
не пробовали использовать?

Да, данный метод действительно работает
Осталось только подумать имеет ли смысл его использовать постоянно для исправление этой ошибки или это колхоз))

Nexus 24.04.2017 15:24

Цитата:

Сообщение от BIGserg (Сообщение 450895)
Да, данный метод действительно работает
Осталось только подумать имеет ли смысл его использовать постоянно для исправление этой ошибки или это колхоз))

Точно не знаю, но если передавать jQ данные в виде объекта, то данный метод будет применен "автоматически".


Часовой пояс GMT +3, время: 06:52.