Ошибка Ajax: код ответа 200

Я использую плагин jQuery Form для обработки отправки формы с помощью Ajax:

$('.login-form').ajaxForm({
    dataType: 'json',
    success: function(data){
        console.log('Success!');
        console.log(data);
    },
    error: function(data){
        console.log('There was an error:');
        console.log(data);
    }
})

После отправки ajax возвращает ошибку со статусом "200". Это ответ в формате JSON:

{
    "success": false, 
    "heading": "The following errors were encountered", 
    "message": "<ul><li>The existing username and/or password you submitted are not valid</li></ul>"
}

Я прогнал его через jsonlint.com, и он вернулся как действительный.

На вкладке «Сеть» Chrome ответ возвращается как тип application/json.

Так почему же ajax возвращает «ошибку», а не «успех»?

jQuery 1.9.1


person kmgdev    schedule 04.09.2013    source источник
comment
Какой вопрос? Что он делает такого, чего вы не ожидаете?   -  person Barbara Laird    schedule 04.09.2013
comment
Некоторые службы не работают и не используют коды состояния для отображения состояния ошибки. Мне кажется, вам просто нужно проверить ключ success.   -  person Brad    schedule 04.09.2013
comment
Убедитесь, что в EE установлен тип шаблона JavaScript (при условии, что ответ находится в шаблоне).   -  person Brian Litzinger    schedule 04.09.2013
comment
@BarbaraLaird Возвращает ошибку Ajax, а не успех Ajax (обратите внимание, что успех Ajax отличается от значения успеха внутри ответа JSON).   -  person kmgdev    schedule 04.09.2013
comment
Итак, выходит ошибка: функция ()? Потому что статус 200 в порядке.   -  person Barbara Laird    schedule 04.09.2013
comment
@BrianLitzinger Как это поможет?   -  person kmgdev    schedule 04.09.2013
comment
@kgrote, я думаю, он пытался прояснить твой ответ. Добавьте код, который я дал вам выше, чтобы мы могли точно видеть, что возвращает сервер. Кроме того, добавьте еще два параметра в обработчик ошибок и также запишите их. Второй — textstatus, третий — текст ошибки.   -  person Kevin B    schedule 04.09.2013
comment
@kgrote Так в чем ошибка?   -  person freakish    schedule 04.09.2013
comment
@kgrote Я пытаюсь уточнить, потому что не понимаю вопроса. Вы говорите, что он возвращает статус 200, что является кодом ответа OK (а не ответом об ошибке). Затем вы сказали, что он возвращает ошибку ajax. Что ты имеешь в виду? Ваша проблема в том, что вместо функции успеха вызывается функция ошибки? Или что-то еще происходит?   -  person Barbara Laird    schedule 04.09.2013
comment
@BarbaraLaird Это означает, что вызывается обратный вызов error (даже если ответ равен 200), т. Е. На стороне клиента есть ошибка. Возможно, из-за разбора JSON (наиболее вероятно) или, может быть, из-за того, что этот плагин (чего я не знаю) выдает его.   -  person freakish    schedule 04.09.2013


Ответы (1)


Внутри значения ключа JSON message был разрыв строки, что по какой-то причине вызвало ошибку:

{
    "success": false, 
    "heading": "The following errors were encountered", 
    "message": "<ul><li>The existing username and/or password you submitted are not valid</li>
</ul>"
}

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

person kmgdev    schedule 04.09.2013