Ing*_*gro 5 javascript php rest yii backbone.js
我正在尝试使用Backbone和Yii Framework完成我的第一个RESTful应用程序.我对GET方法没有任何问题,但是我现在卡在POST方法中,以创建一个新元素.
我在Backbone中有一个评论模型:
var commentModel = Backbone.Model.extend({
urlRoot: "index.php/api/comments",
idAttribute: 'id',
defaults: {
content: "Empty comment",
status: 1
}
});
Run Code Online (Sandbox Code Playgroud)
在我看来,我添加了一个函数来创建一个新的Comment传递相对形式的值:
on_submit: function(e) {
var new_comment = new Comment({author_id: this.$('#author_text').val(), content: this.$('#content_text').val(), post_id: this.$("#post_text").val(), status: this.$("#status_text").val()});
new_comment.save();
},
Run Code Online (Sandbox Code Playgroud)
用Firebug查看请求似乎没问题,在POST选项卡中我可以看到所有值:
JSON
author_id "7"
content "Epic fail"
post_id "7"
status "2"
Source
{"content":"Epic fail","status":"2","author_id":"7","post_id":"7"}
Run Code Online (Sandbox Code Playgroud)
但是在我的php Api中,$ _POST var是空的!
foreach($_POST as $var=>$value) {
if($model->hasAttribute($var))
$model->$var = $value;
else
$this->_sendResponse(500);
}
Run Code Online (Sandbox Code Playgroud)
有人有想法吗?阅读Backbone.Sync的文档我明白它应该使用POST来创建请求.
我找到了一个解决方法来获取以下值:
file_get_contents('php://input')
Run Code Online (Sandbox Code Playgroud)
但是对我来说身份不合适......
谢谢.
nik*_*shr 10
使用默认实现,当Backbone.sync发送保存模型的请求时,其属性将被传递,序列化为JSON,并在HTTP主体中使用content-type application/json发送.
这意味着您不会在常规表单帖子中的参数中接收数据,而是在HTTP响应的正文中.
您有三种方法可以处理此行为:
| 归档时间: |
|
| 查看次数: |
1751 次 |
| 最近记录: |