2010-07-20 105 views
3

是否有可能使用自定義HTTP VERB,如MERGE,與jQuery.ajax()?我正在與OData API進行交互,在將更新發布到記錄時需要使用MERGE動詞。自定義HTTP動詞與jQuery.ajax()

我遇到的問題是,當我在ajax()請求中使用「MERGE」時,它不會將數據發送到服務器。它只是發送一個沒有數據的MERGE請求,所以OData服務拒絕它。

當我將請求更改爲PUT時,OData服務會發回500錯誤。

我的選擇基本上是要弄清楚如何獲得「MERGE」調用與請求一起發送數據,執行DELETE後跟POST(刪除並在每次更新時重新創建記錄),或者找出如何修改OData服務以接受更新的PUT。

讓我知道你是否有任何想法如何使jQuery.ajax()發送帶有MERGE請求的數據。

感謝,

戴夫

+0

似乎非常難找到這些信息。我會說試試。如果它適用於主流瀏覽器,那很好;否則,您必須找到解決方法。有可能瀏覽器未知的動詞被阻止。 – 2010-07-20 19:12:18

+0

相關:http://stackoverflow.com/questions/165779/are-the-put-delete-head-etc-methods-available-in-most-web-browsers – 2010-07-20 19:13:06

+0

我在Chrome中嘗試過,併發送一個適當的MERGE動詞,但它不包含請求有效載荷,這是一個重要部分。我將在下面的Alex的帖子中嘗試一下隧道方法。謝謝你的幫助! – 2010-07-21 03:43:32

回答

4

OData支持隧道編排MERGE through POST - 當然這通過JQuery支持 - 通過添加X-HTTP-Method標頭。

請參閱本thread更多

亞歷

OData的項目經理微軟

+0

謝謝!這正是我所期待的。 – 2010-07-21 03:42:07

6

這不是jQuery的處理自定義HTTP動詞能力的問題,這依賴於瀏覽器

+3

雅各布的正確,這不是jQuery阻止你,而是瀏覽器的XmlHttpRequest的實現。例如,IE不支持'PUT'。 – 2010-07-20 19:12:26

1

通過this question發現,here是一篇看起來很有趣的博客文章。

答案 - 至少在2008年 - 如果我正確讀取:

  • IE瀏覽器似乎不支持它(至少到第7版)

  • Firefox支持它

  • 歌劇把所有未知變成了GET請求

我認爲你必須嘗試一下。