Ajax jquery всегда работает Ошибка
Каждый раз, когда я запускаю функцию ajax jquery, я получаю сообщение об ошибке, это касается всех моих вызовов ajax.
вот пример моего кода
function FindContact(CompanyName,DivisionName,FirstName,LastName) {
$.ajax({
url: 'Path',
dataType: "json",
async:false,
type:'post',
data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName},
success: DisplayContacts,
error: ErrorMsg
});
}
чтобы обойти это, я использую этот
function ErrorMsg(result) {
if (result.status == 200 && result.statusText == 'OK') {
DisplayContacts(result);
}
else {
alert("FAILED : " + result.status + ' ' + result.statusText);
}
}
Это сложно, потому что мне нужно создать такой метод для каждого запроса ajax.
почему он запускает код ошибки 1st???
Пожалуйста, помогите!
Ответы
Ответ 1
Убедитесь, что возвращаемое вами значение действительно json. Если его нет, и все будет правильно на сервере, $.ajax пойдет на ошибку, а не на успех.
function FindContact(CompanyName,DivisionName,FirstName,LastName) {
$.ajax({
url: 'Path',
dataType: "html or json",
async:false,
type:'post',
data: {'FirstName':FirstName,'LastName':LastName,'DivisionName':DivisionName,'CompanyName':CompanyName},
success: DisplayContacts,
error: ErrorMsg
});
}
Быстрая проверка правильности json заключается в том, чтобы просто переключить dataType на html и увидеть, что успех уволен. Если это не так, как ваш json недействителен, если у вас все еще возникает одна и та же проблема, то что-то еще не так.
Еще один способ проверить, действительно ли возвращен json, открыть firebug, и когда запрос будет отправлен, нажмите на вкладку ответа, скопируйте ответ и перейдите на jsonlint.com, чтобы проверить, действительно ли он.
Jquery ajax docs
Ответ 2
Мое решение было разницей в заголовках Accept-Type и Content-Type. Если заголовок Accept-Type запроса на стороне клиента не соответствует ответу заголовка Content-Type на стороне сервера, Jquery вызовет обратный вызов ошибки.
JQuery, по умолчанию, устанавливает заголовок Accept-Type в application/json
. Однако мой сервер отправлял ответ с Content-Type application/x-javascript
. Мое исправление заключалось в том, чтобы изменить ответ заголовка Content-Type на стороне сервера на соответствующий application/json
.
Ответ 3
Я столкнулся с той же проблемой при создании ajax-вызова с использованием jquery ajax. Я исправил его, используя следующий код:
$.ajax({
url: "/url",
dataType: 'text',
success: function(result){ alert(result); },
error: ErrorMsg,
});
Примечание. dataType: 'text', он работал у меня.