2011-05-01 143 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