2013-04-14 38 views
0

好的,基本上我正在向Codeigniter發送一個帶有JSON有效載荷的POST請求。我使用RESTAdapater。 JSON在沒有密鑰的情況下被髮送到那裏,所以我無法訪問它。使用EmberJS中的密鑰包裝JSON有效載荷

這裏是模型:

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

這裏是控制器:

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

在REST實現,我用標準的方式來訪問POST請求$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 10

所以1中的2。無論如何要用密鑰包裝JSON有效載荷?或者無論如何訪問配置項中的原始JSON數據,沒有密鑰可用?

+0

$ array = json_decode($ payload);會給你一個數組,讓你可以按你想要的方式引用它們。 – ahmad

+0

爲什麼你沒有鑰匙沒有訪問它? $ this-> post – intuitivepixel

+0

很可能是因爲PHP中的底層實現,它不會;如果它不是一個有效的查詢字符串或類似的東西,它會在$ _POST數組中註冊。 只用file_get_contents(「php:// input」)訪問JSON會不好主意? – galdikas

回答

0

好吧,自己弄明白了(或者更確切地說,閱讀例子)。

當使用亞當惠特尼的菲爾鱘魚分叉REST controller for CodeIgniter時,JSON有效載荷將在$this->_post_args中可用。在底層實現中,他使用我已經提到的file_get_contents("php://input")

編輯:同樣的約定也適用於其他類型的請求,例如DELETE請求數據將在​​中可用。或者$this->_args是可以找到所有類型的參數的「魔術」地方。