Я понимаю, что моя проблема в том, что jQuery пытается разобрать тело ответа как json, но тело не определено и, таким образом, выдает ошибку.Как обрабатывать ответ с неопределенным телом?
Я не могу изменить ответ. Это ответ по умолчанию на серверах Jenkins. Он отправляет 201, 404 или 500 в заголовок, с которым я бы хотел справиться.
мой Аякс:
$(document).ready(function() {
$('#reviewForm').bootstrapValidator({
...stuff...
...validation...
})
.on('success.form.bv', function (e) {
// Prevent form submission
e.preventDefault();
// Get the form instance
var $form = $(e.target);
// Use Ajax to submit form data
$.ajax({
type: 'POST',
url: url+$form.serialize(),
dataType: 'text',
complete: function() {
alert("Success.");
},
error: function(xhr, status, text) {
alert("failure");
}
});
Несмотря на успешный пост (201 создано), он все равно ударит ошибку из-за синтаксическую ошибку из-за неопределенное тело.
Я бы с удовольствием обработал ошибки в ошибке: часть ajax, но я не могу, чтобы жизнь меня определяла, как получить код состояния из заголовка ответа.
И, как я уже сказал, я бы изменил ответ, если мог, но его как раз как работает Дженкинс.
спасибо.
EDIT: заголовок ответа
Status Code: 201 Created
Connection: Keep-Alive
Content-Type: text/plain; charset=UTF-8
Date: Wed, 01 Oct 2014 14:51:12 GMT
Keep-Alive: timeout=15, max=100
Location: https://jenkins....
Server: Jetty(8.y.z-SNAPSHOT)
Transfer-Encoding: chunked
и это XHR (XML ответа HTTP)
{
"readyState": 0,
"status": 0,
"statusText": "error"
}
Что заставляет вас думать, JQuery пытается разобрать ответ как JSON? Согласно вашему коду, вы ожидаете «текст» - поэтому тело ответа «неопределенный» не изменит ситуацию. – Adam
'dataType: 'text' означает, что он вообще не будет анализировать ответ. Это оставит его как простую строку. Независимо от вашей ошибки, происходит что-то еще. – Spokey
Я знаю, что jquery обрабатывает его как ошибку, потому что каждый раз появляется предупреждение о сбое. У меня был успех, но он никогда не поп. Если это не ошибка синтаксического анализа, то это что-то еще, больной продолжать исследовать –