Подтвердить что ты не робот

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???

Пожалуйста, помогите!

4b9b3361

Ответ 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', он работал у меня.