JQuery Ajax Post приводит к 500 внутренняя ошибка сервера - PullRequest
71 голосов
/ 29 августа 2009

Я пытаюсь выполнить эту запись AJAX, но по какой-то причине я получаю ошибку сервера 500. Я вижу, что это хит точки останова в контроллере. Таким образом, проблема, кажется, на обратном вызове. Кто-нибудь?

$.ajax({
    type: "POST",
    url: "InlineNotes/Note.ashx?id=" + noteid,
    data: "{}",
    dataType: "json",

    success: function(data) {
        alert(data[1]);
    },
    error: function(data){
        alert("fail");
    }
});

Это строка, которая должна быть возвращена:

{status:'200', text: 'Something'}

Ответы [ 28 ]

65 голосов
/ 29 августа 2009

Я подозреваю, что метод сервера генерирует исключение после того, как он проходит вашу точку останова. Используйте Firefox / Firebug или инструменты разработчика IE8, чтобы посмотреть фактический ответ, который вы получаете от сервера. Если возникло исключение, вы получите HTML-код YSOD, который должен помочь вам выяснить, где искать.

Еще одна вещь - ваше свойство данных должно быть {}, а не "{}", первый - пустой объект, а последний - строка, которая недопустима в качестве параметра запроса. Еще лучше, просто оставьте это, если вы не передаете никаких данных.

29 голосов
/ 23 августа 2011

в случае, если кто-то использует платформу codeigniter, проблема может быть вызвана включенной конфигурацией защиты csrf.

18 голосов
/ 12 января 2012

У меня просто возникла эта проблема, хотя я и не смог найти причину ее возникновения в моем случае, при изменении с POST на GET ошибка проблемы 500 исчезла!

15 голосов
/ 26 марта 2012

Это простой код запроса Ajax для получения данных через запрос Ajax

$.ajax({
    type: "POST",
    url: "InlineNotes/Note.ashx",
    data: '{"id":"' + noteid+'"}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(data) {
        alert(data.d);
    },
    error: function(data){
        alert("fail");
    }
});
10 голосов
/ 29 августа 2009

Вы можете посмотреть коды состояния HTTP здесь (или здесь ), эта ошибка говорит вам:

"Сервер обнаружил непредвиденное состояние, которое не позволило ему выполнить запрос."

Вам нужно отладить ваш сервер.

8 голосов
/ 14 января 2017

Я столкнулся с аналогичной сложной ошибкой, которая требовала двух решений. В моем случае технологический стек был MVC / ASP.NET / IIS / JQuery. На стороне сервера произошел сбой с ошибкой 500, и это происходило до того, как контроллер обработал запрос, что затруднило отладку на стороне сервера.

Следующая отладка на стороне клиента позволила мне определить ошибку сервера

При обратном вызове ошибки $ .ajax выведите на консоль подробности ошибки

  error: (error) => {
                     console.log(JSON.stringify(error));
   }

Это, по крайней мере, позволило мне увидеть исходную ошибку сервера

«Запрос JSON был слишком велик для сериализации»

Это было решено в клиенте web.config

<appSettings>
    <add key="aspnet:MaxJsonDeserializerMembers" value="150000" />

Однако запрос по-прежнему не выполнен. Но на этот раз с другой ошибкой, которую я теперь смог отладить на стороне сервера

«Запросить объект слишком большой»

Это было решено добавлением следующего к сервису web.config

<configuration>
…
 <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="524288">
          <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"  />
        </binding>
      </basicHttpBinding>
    </bindings>

Значения конфигурации могут потребовать дальнейшей настройки, но, по крайней мере, это решило ошибки сервера, вызванные сообщением ajax.

8 голосов
/ 17 февраля 2011

Сегодня я сталкиваюсь с тем же. Как было предложено ранее, получите Firebug для Firefox, включите консоль и просмотрите POST-ответ. Это помогло мне выяснить, насколько глупой была проблема. Мое действие ожидало значения типа int, и я публиковал строку. (ASP.NET MVC2)

6 голосов
/ 29 августа 2009

В EventVwr (Предупреждение от asp.net) должно быть зарегистрировано событие, которое может предоставить вам более подробную информацию о том, где может быть ошибка.

4 голосов
/ 29 августа 2009

Значение 500 из ASP.NET, вероятно, означает, что в какой-то момент при обработке запроса возникло необработанное исключение.

Я предлагаю подключить отладчик к процессу веб-сервера (при условии, что у вас есть доступ).

Одна странная вещь: вы делаете POST-запрос к серверу, но не передаете никаких данных (все находится в строке запроса).Возможно, это должен быть запрос GET?

Вам также следует дважды проверить правильность URL-адреса.

3 голосов
/ 12 августа 2014

Вы также можете получить эту ошибку в VB, если вызываемая функция начинается с Публичная общая функция вместо Публичная функция в веб-службе. (Как может случиться, если вы переместите или скопируете функцию из класса). Просто еще одна вещь, за которой нужно следить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...