使用EmberJS中的密钥包装JSON有效负载

时间:2013-04-14 10:27:57

标签: json codeigniter ember.js

好吧,基本上我正在向Codeigniter发送一个带有一些JSON有效负载的POST请求。我使用RESTAdapater。 JSON在没有密钥的情况下被发送到那里,所以我无法访问它。

这是模特:

App.Bookmark = DS.Model.extend({
    title: DS.attr("string"),
    url : DS.attr("string")
});

这是控制器:

App.BookmarksNewController = Ember.ObjectController.extend({
    save: function(){
        this.get("model.transaction").commit();
        this.get("target").transitionTo("bookmarks");
    }
});

在CI中的REST实现中,我使用标准方式来访问帖子请求$this->input("key")。但是,当生成上述请求时,仅发送原始JSON数据。因此,我似乎没有办法以任何方式引用它。

举个例子:

function post(){
    $this->response(var_dump(file_get_contents("php://input")),200);
}

给我这个输出:

string(48) "{"bookmark":{"title":"sdffdfsd","url":"sdfsdf"}}"

我希望看到的是:

string(48) payload="{"bookmark":{"title":"sdffdfsd","url":"sdfsdf"}}"

然后是服务器我可以用$this->post("payload").

之类的东西访问这个JSON

所以1的2.无论如何用密钥包装JSON有效负载?或者无论如何在CI中访问原始JSON数据而没有可用的密钥?

1 个答案:

答案 0 :(得分:0)

好吧我自己想出来(或者更确切地说明了这些例子)。

当使用Adam Whitney的Phil Sturgeons REST controller for CodeIgniter分支时,$this->_post_args将提供JSON有效负载。在底层实现中,他使用了我已经提到的file_get_contents("php://input")

编辑:同样的约定也适用于其他类型的请求,例如,$this->_delete_args中将提供DELETE请求数据。或者$this->_args是可以找到所有类型的args的“神奇”地方。