我正在使用Codeigniter实现Backbone.js,并且在Ajax调用时很难从Codeigniter接收正确的响应.我正在做一个#Create,导致#save,然后是#set,就在那里,它中断了,无法找到我返回数据的格式的ID.
出于测试目的,我正在回应
    '[{"id":"100"}]'
回到眉毛,仍然找不到它.
任何人都知道Backbone/Codeigniter(或类似的)RESTful实现示例?
您需要返回200个响应代码,否则它将无法通过响应.
我使用Backbone/CI组合构建了一些应用程序,如果你使用Phil Sturgeon的REST实现CodeIgniter会容易得多
比你位于url example.com/api/user和目录应用程序/ controllers/api/user.php的控制器看起来像这样:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
include APPPATH.'core/REST_Controller.php';  // MUST HAVE THIS LINE!!!
class User extends REST_Controller {
    // update user   
    public function index_put() // prefix http verbs with index_
    {
        $this->load->model('Administration');
        if($this->Administration->update_user($this->request->body)){ // MUST USE request->body
            $this->response(NULL, 200); // this is how you return response with success code
            return;
        }
        $this->response(NULL, 400); // this is how you return response with error code
    }
    // create user
    public function index_post()
    {
        $this->load->model('Administration');
        $new_id = $this->Administration->add_user($this->request->body);
        if($new_id){
            $this->response(array('id' => $new_id), 200); // return json to client (you must set json to default response format in app/config/rest.php
            return;
        }
        $this->response(NULL, 400);
    }
    // deleting user
    public function index_delete($id)
    {
        $this->load->model('Administration');
        if($this->Administration->delete_user($id)){
            $this->response(NULL, 200);
            return;
        }
        $this->response(NULL, 400);
    }
}
它将帮助您返回正确的答案.
提示:无论您返回客户端的任何内容都将设置为模型属性.例如,当您仅返回时创建用户:
'[{"id":"100"}]'
model将被赋予id 100.但如果你返回:
'[{"id":"100", "date_created":"20-aug-2011", "created_by": "Admin", "random": "lfsdlkfskl"}]'
所有这些键值对都将被设置为用户模型(为了清楚起见,我添加了这个,因为它在开始时让我很困惑)
重要提示:如果您使用的是1.7.x,那么这适用于CI 2.0+.REST实现与目录结构有点不同
| 归档时间: | 
 | 
| 查看次数: | 3517 次 | 
| 最近记录: |