BackboneJS + Codeigniter将API结果转换为字符串

时间:2014-03-17 16:29:48

标签: php mysql codeigniter backbone.js

我有这个Backbone App,我使用Codeigniters Restful API。我有这个功能,我从MySQL数据库中获取Artistnames。现在,我的API给了我这样的结果:

{"artist_name" : "Queens of the stone age"}

我想要实现的是我得到的名字是/queensofthestoneage。我怎样才能做到这一点?

My Backbone View看起来像这样:

function (App, Backbone) {
    var Artistname = App.module();

    Artistname.View = Backbone.View.extend({
        template: 'artistname',
        initialize: function() {
            this.listenTo(this.collection, 'all', this.render)
        },
        serialize: function() {
            return this.collection ? this.collection.toJSON() : [];
        }
    });
    Artistname.ArtistnameCollection = Backbone.Collection.extend({
        url: function() {
            return '/project/ci/index.php/api/artistchannel/artistname/' + this.artist_id;
        }
    });

    return Artistname;
}

我的Codeigniter / API MySQL查询如下所示:

public function a_artists_get()  
{ 
  $this->load->database();
  $sql = "SELECT formated_name FROM `artists` WHERE formated_name LIKE 'A%'";
  $query = $this->db->query($sql);
  $data = $query->result();

  if($data) {
     $this->response($data, 200);
  } else {
     $this->response(array('error' => 'Couldn\'t find any artists with letter a!'), 404);
  }
}

欢迎任何帮助!

提前致谢...

1 个答案:

答案 0 :(得分:0)

假设您在谈论服务器端,在PHP中,您可以使用str_replace()删除空格,或preg_replace()使用正则表达式删除任何空格。然后在将数据转换为JSON之前使用strtolower()转换为小写:

echo strtolower(preg_replace("/\s+/", '', "Queens of the Stone Age"));
echo strtolower(str_replace(" ", '', "Queens of the Stone Age"));

如果你可以保证MySQL中的数据中出现的所有空格(例如没有回车),那么str_replace()就是更快的方式。否则,我可能会使用正则表达式方法,因为它会删除所有空格。