ajax put возвращает 500 внутренняя ошибка сервера - PullRequest
2 голосов
/ 04 декабря 2011

Я использую Django tastypie для реализации REST API, но столкнулся с проблемой, которую я не могу понять:

Когда я запускаю локон

curl -H "Content-Type: application/json" -X PUT --data '{"title": "my video", "date_created": "2007-03-07T14:48:22"}' http://localhost:8080/api/v1/video/1/

Это работает и изменяет содержимое, как и ожидалось.

Однако, когда я пытаюсь сделать это через браузер с помощью вызова:

 $.ajax({
    url: 'http://localhost:8080/api/v1/video/1/',
    type: 'PUT',
    data: JSON.stringify(mydata),
    success: check,
    dataType: 'text/html',
    error: function(jqXHR, textStatus, errorThrown) {
      alert(textStatus);
    },
});

Я получаю 500 Внутренняя ошибка сервера

Понятия не имею, почему это так ... потому что браузеры больше не поддерживают PUT? Какая правильная работа вокруг?

1 Ответ

0 голосов
/ 04 декабря 2011

Я думаю, что вы используете неправильный dataType, попробуйте использовать jsonp.Может также зависеть от браузера, из jQuery:

Тип запроса («POST» или «GET»), по умолчанию «GET».Примечание. Здесь также можно использовать другие методы HTTP-запросов, такие как PUT и DELETE, но они поддерживаются не всеми браузерами.

Эта ссылка также может быть полезной: jquery - howпоставить JSON через AJAX

...