2011-08-10 25 views
4

我正在嘗試使用Philip Sturgeon編寫的RESTful api將Backbone.js中的模型同步到Codeigniter @http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/ 我試圖向用戶資源組添加一個條目。問題是:我會得到一個新的條目,但標題將爲0而不是「Hello World !!!」 我相信分解是在控制器中的'title'=> $ this-> post('title'),因爲當我用'title'=>'FOO'替換它時,Foo將出現在DB中。有什麼想法嗎? 順便說一句,我應該把在Backbone.js的將Backbone.js的HTTP請求傳遞給CodeIgniter到DB

url: "MyApp/index.php/app/user" or 
url: "MyApp/index.php/app/user/id/(xxx)" 

的URL Backbone.js的

$(document).ready(function(){ 
var Item = Backbone.Model.extend({ 

defaults: { 
    title: "Hello World!!!" 
}, 

url: "MyApp/index.php/app/user" 

}); 
var item=new Item; 
item.save(); 

app.php(控制器)

function user_post() 
{ 
    $data=array(
    'id'=> NULL, 
    'title'=>$this->post('title') 
    ); 

    $result = $this->App_Model->create($data); 
} 

app_model.php(型號)

function create($data) 
{ 

    $query = $this->db->insert('data', $data) 
} 

UPDATE ::

這是從Chrome檢查

請求方法:POST

狀態代碼:200 OK

請求Headersview源

接受:應用/ JSON,文本/ JavaScript的, /; Q = 0.01

連接:保持活着

的Content-Length:15

內容類型:應用/ JSON

X-請求-隨着:XMLHttpRequest的

請求負載{ 「標題」:「我的內容!!」}

+0

請求方法:POST 狀態代碼: 200 OK 請求頭文查看源代碼 接受:application/json,text/javascript,*/*; q = 0.01 Accept-Charset:ISO-8859-1,utf-8; q = 0.7,*; q = 0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:zh-cn,en; q = 0.8 連接:保活 的Content-Length:15 內容類型:應用程序/ JSON 主持人:www.williamsham.com X-要求 - 由於:XMLHttpRequest的 請求負載 {「稱號」:「我的內容!!「} –

回答

1

我不太確定爲什麼你的標題參數不是gett通過。我建議使用Firebug或Chrome Inspector來檢查標題參數是否實際發送。你可以從那裏縮小你的調試範圍。

對於URL,RESTful方式做到這一點是使用MyApp的/ index.php文件/應用/用戶/ ID」來管理單個用戶

編輯

它看起來像我的猜測是PHP沒有正確讀取JSON數據,你可以使用$ decoded = json_decode($ this-> post ('title'))把它變成一個php對象

+0

我已經添加了Chrome Inspector的東西......基於那個..你認爲錯誤的根源在哪裏? –

+0

編輯它以反映新信息 – userinev

5

我也有這個問題,我的解決方案:

$data = json_decode(file_get_contents('php://input'), true); 
$this->site_model->create($data); 
0

怎麼樣使用$this->input->post('title');?(Reference

2

你需要改變你的控制下,這條線:

$this->post('title') 

$this->input->post('title') 

或實際上,你可以使用純PHP訪問您的POST全局變量,如$ _ POST [ '標題']。

爲參照,檢查CodeIgniter's Input Class

0

嘗試訪問

$this->request->body 

它應該包含所有的值要通過Backbone.js的發佈內容

相關問題