Почему я получаю эту ошибку 501 Не реализовано? - PullRequest
4 голосов
/ 26 июня 2010

Я выполняю следующий вызов AJAX:

$(document).ready(function() {

  $.getJSON('https://sendgrid.com/api/user.stats.json',
    {
      'api_user': 'me@mydomain.com',
      'api_key': 'MYAPIKEY',
      'user': 'me@mydomain.com',
      'category': 'MY_CATEGORY'
    },
    function(response){
      alert('received response');
    }
  );

});

и я не получаю предупреждающее сообщение, как ожидалось. Вместо этого Firebug говорит, что я получаю «501 Not Implemented.»

Почему? Что мне нужно сделать, чтобы это исправить?

Если перейти по URL-адресу, соответствующему вызову AJAX в Firebug, я получу файл JSON для загрузки, и он содержит ожидаемые данные.

Одна вещь, которую я заметил, заключается в том, что firebug говорит «OPTIONS» вместо «GET»:

альтернативный текст http://grab.by/grabs/b1a13d92a4fc69aa310880a5d7a06b95.png

Ответы [ 3 ]

2 голосов
/ 26 июня 2010

Я не знаю, связано ли это, но обычно при запросе JSON на клиенте к серверу в другом домене вам нужно использовать JSONP вместо JSON из-за Same Origin Policy ,К сожалению, похоже, что их API не поддерживает использование JSONP, поэтому они должны ожидать, что вы будете взаимодействовать с их сайтом с вашего сервера.В этом случае вам понадобятся прокси-методы на вашем сервере для преобразования вызовов в их API, чтобы клиентские вызовы выполнялись на сервере в том же домене, что и страница.

1 голос
/ 14 декабря 2015

Поскольку это лучшее совпадение Google для "jQuery 501 (метод не реализован)", я подумал, что поделюсь тем, что сработало для меня, когда я столкнулся с этим на том же домене (что не является вашей проблемой).

Моя проблема заключалась в том, что я не возвращал действительный JSON, я просто возвращал "1". Чтобы это исправить, либо:

  • Убедитесь, что вы вернули правильный JSON или если вам не требуется ответ JSON,
  • Поменяйте местами ваш звонок, чтобы использовать $ .ajax вместо $ .getJSON или
  • Если вы уже используете & .ajax, удалите тип: "json"

Надеюсь, что это помогает некоторым людям.

0 голосов
/ 24 апреля 2014

У меня была такая же проблема, и я понял, что это проблема кодирования.Это было решено путем кодирования значений данных, отправляемых на сервер.Попробуйте что-то вроде:

$(document).ready(function() {

  $.getJSON('https://sendgrid.com/api/user.stats.json',
    {
      'api_user': encodeURIComponent('me@mydomain.com'),
      'api_key': encodeURIComponent('MYAPIKEY'),
      'user': encodeURIComponent('me@mydomain.com'),
      'category': encodeURIComponent('MY_CATEGORY')
    },
    function(response){
      alert('received response');
    }
  );

});

end и затем декодируйте данные на бэкэнде.Надеюсь, это кому-нибудь поможет.

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