2011-05-01 142 views
4

我想保存在CouchDB的骨幹機型,所以我已經覆蓋了save方法與阿賈克斯requet到CouchDB的:jQuery的PUT Ajax請求不工作

$.ajax({ 
    type: 'PUT', 
    url: 'http://127.0.0.1:5984/movies/' + this.get('id'), 
    contentType: 'application/json', 
    data: JSON.stringify(this.toJSON()), 
    success: function() { 
     console.log('asdf'); 
    }, 
    failure: function() { 
    console.log('test'); 
    } 
    }); 

請求被髮送,但是當我看在CouchDB的日誌jQuery的似乎發送OPTIONS HTTP方法,而不是PUT

[信息] [< 0.1601.0>] 127.0.0.1 - - '選項'/電影/ 862 405

和couchdb發送一個405 HTTP響應代碼(方法不允許)。有任何想法嗎?

編輯 這裏是發送到CouchDB的標題:

OPTIONS /movies/862 HTTP/1.1 
Host: 127.0.0.1:5984 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Origin: http://localhost:8888 
Access-Control-Request-Method: PUT 
Access-Control-Request-Headers: content-type 
+0

在哪裏「這」是指向? – Mohsen 2011-05-01 05:58:17

+0

的骨幹模型,但不應該有任何與HTTP請求方法問題待辦事項 – errorhandler 2011-05-01 05:59:49

+0

哪個版本的jQuery? AJAX部分最近完全被重寫。 – 2011-05-01 07:56:59

回答

0

PUT並非所有瀏覽器都支持。此外,您的數據屬性是「數據」,而不是「正文」。

+0

?我已經在Firefox 4,Chrome 11和Safari 5 – errorhandler 2011-05-01 07:37:29

+0

上測試過它,爲什麼它會默認使用幾乎不曾使用的HTTP方法而不是拋出錯誤 – errorhandler 2011-05-01 07:55:48

+0

這是否是CROSS-SITE請求?您是否在瀏覽器中使用該IP來查看您正在查看的網頁?如果這樣可以解釋爲什麼PUT切換到訪問控制方法參數並生成OPTIONS請求。 – 2011-05-01 19:41:26