我正在使用Codeigniter实现Backbone.js,并且在Ajax调用时很难从Codeigniter接收正确的响应。我正在做#Create,导致#save,然后是#set,就在那里,它中断了,无法找到我返回数据格式的ID。
出于测试目的,我正在回应
'[{"id":"100"}]'
回到眉毛上,仍然无法找到它。
任何人都知道Backbone / Codeigniter(或类似的)RESTful实现示例?
答案 0 :(得分:9)
您需要返回200个响应代码,否则它将无法通过良好的响应。
我使用Backbone / CI组合构建了一些应用程序,如果你使用Phil Sturgeon的REST implementation for 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"}]'
模型将被赋予id 100.但是如果你返回:
'[{"id":"100", "date_created":"20-aug-2011", "created_by": "Admin", "random": "lfsdlkfskl"}]'
所有这些键值对都将设置为用户模型(为了清楚起见,我添加了这个,因为它在开始时让我很困惑)
重要提示:如果您使用的是1.7.x,那么这适用于CI 2.0+。REST实现与目录结构有点不同