2010-07-20 2 views
3

Возможно ли использовать пользовательский HTTP VERB, например MERGE, с jQuery.ajax()? Я взаимодействую с OData API, который ожидает глагол MERGE при публикации обновлений записей.Пользовательский HTTP-глагол с jQuery.ajax()

Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую «MERGE» в запросе ajax(), он не отправляет данные на сервер. Он просто отправляет запрос MERGE без данных, поэтому служба OData отклоняет его.

Когда я меняю запрос на PUT, служба OData отправляет обратно 500 ошибок.

Мои параметры в основном, чтобы выяснить, как получить вызовы «MERGE» для отправки данных вместе с запросом, выполните DELETE, а затем POST (удалите и заново создайте запись при каждом обновлении) или выясните, как измените службу OData, чтобы принимать PUT для обновлений.

Дайте мне знать, если у вас есть идеи по поводу того, как сделать jQuery.ajax() отправкой данных с запросом MERGE.

Спасибо,

Dave

+0

Это кажется ужасно трудно найти информацию по этому вопросу. Я бы попробовал. Если это работает с основными браузерами, все в порядке; в противном случае вам придется найти обходной путь. Возможные глаголы, неизвестные браузеру, блокируются некоторыми. –

+0

Связанный: http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsers –

+0

Я пробовал в Chrome, и он отправляет правильный MERGE глагол, но он не включает полезную нагрузку запроса, которая является важной частью. Я собираюсь попробовать метод туннелирования в сообщении Alex ниже. Спасибо за вашу помощь! –

ответ

4

OData поддерживает туннелирование MERGE through POST - что, конечно же, поддерживается через JQuery - путем добавления заголовка X-HTTP-Method.

Смотреть это thread более

Alex

OData Менеджер программы Microsoft

+0

Спасибо! Это именно то, что я искал. –

6

Это не вопрос о способности jQuery «s для обработки пользовательских HTTP глаголов, это зависит от браузера.

+3

Якоб прав, это не jQuery, останавливающий вас здесь, а реализация браузера XmlHttpRequest. Например, IE не поддерживает 'PUT'. –

1

Найдено this question, here - статья в блоге, которая выглядит интересной.

Ответ - по крайней мере, в 2008 году - если бы я прочитал это правильно:

  • IE, кажется, не поддерживает его (по крайней мере до версии 7)

  • Firefox поддерживает его

  • Opera превращает все неизвестные в GET просьбе

Думаю, вам придется попробовать.

Смежные вопросы