我有这个应用程序,我使用Codeigniter作为后端,Backbone作为前端。现在我使用来自https://github.com/philsturgeon/codeigniter-restserver的RESTful API。我想获取RSS提要,因此我在application->models
中创建了一个RSS-model.php:
<?php
class Rss_model extends CI_Model
{
var $table_name = 'artist_news';
var $primary_key = 'news_id';
function get_all_rss_feeds()
{
$this->db->select($this->primary_key);
$this->db->from($this->table_name);
return $this->db->get();
}
}
?>
然后在application->controllers
我创建了文件夹api
,我在其中创建了文件rss.php:
<?php
require(APPPATH.'libraries/REST_Controller.php');
class rss extends REST_Controller{
public function get_all_rss_feeds_get()
{
$this->load->database();
$this->load->model('rss_model');
$data = $this->rss_model->get_all_rss_feeds();
if($data) {
$this->response($data, 200);
} else {
$this->response(array('error' => 'Couldn\'t find any news!'), 404);
}
}
}
?>
到目前为止,它返回了一个包含大量rss-feeds的文本数组,但不是JSON
格式,这是我前端需要的。
有谁知道这里的问题是什么?
提前致谢...
[编辑]
My Backbone Code看起来像这样:
function (App, Backbone) {
var Rss = App.module();
Rss.View = Backbone.View.extend({
template: 'rss',
initialize: function() {
this.listenTo(this.collection, 'all', this.render)
},
serialize: function() {
return this.collection ? this.collection.toJSON() : [];
}
});
Rss.RssCollection = Backbone.Collection.extend({
url: function() {
return '/myproject/index.php/api/rss/get_all_rss_feeds/';
}
});
return Rss;
}
答案 0 :(得分:3)
转到config / rest.php文件并找到以下行:
$config['rest_default_format'] = 'xml';
将其更改为:
$config['rest_default_format'] = 'json';
答案 1 :(得分:0)
如果您使用Phil Sturgeon REST库,则需要在URL中附加格式类型。例如:
http://example.com/books.json
http://example.com/books?format=json
如果你想用另一种格式,比方说XML,你只需要在URI中传递新格式,不需要在代码中改变任何东西。例如:
http://example.com/books.xml
http://example.com/books?format=xml
进一步阅读:
内容类型部分 - https://github.com/philsturgeon/codeigniter-restserver
答案 2 :(得分:0)
我认为您错过了模型返回的结果,请检查以下内容
function get_all_rss_feeds()
{
$this->db->select($this->primary_key);
$this->db->from($this->table_name);
return $this->db->get()->result();
}