2014-03-17 2 views
0

У меня есть это приложение Backbone, где я использую Codeigniters Restful API. У меня есть эта функция, где я получаю Artistnames из моего MySQL db. Сейчас мой API дает мне результат:BackboneJS + Codeigniter конвертировать результат API как строку

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

То, что я хочу, чтобы добиться того, что я получаю имя как /queensofthestoneage. Как я могу это достичь?

Мой Магистральная Посмотреть выглядит следующим образом:

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); 
    } 
} 

Любая помощь приветствуется!

Заранее спасибо ...

+0

Вы говорите на стороне клиента или сервера? –

ответ

0

Предполагая, что вы говорите о стороне сервера, в PHP, вы можете использовать либо использовать str_replace() вырезать пробелы, или preg_replace() удалить любые пробелы с регулярным выражением. Затем используйте strtolower() для преобразования в нижний регистр перед преобразованием данных в формате JSON:

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

Если вы можете гарантировать, что пространства будет все, что появляется в данных MySQL (например, нет возврата каретки), то str_replace() путь идти быстрее, чем раньше. В противном случае, я бы, вероятно, использовал подход regex, поскольку он удалит все пробелы.

+0

А, ок! Я обновил свой вопрос, поэтому могу ли я включить ваше предложение? – SHT

+0

Да. '$ data' будет ассоциативным массивом, поэтому вам нужно будет добавить нечто вроде' $ data ['artist_name'] = strtolower (preg_replace ("/ \ s + /", '', $ data ['artist_name'])) ; 'после запроса и перед оператором IF. –

+0

Следуя вашему примеру, он говорит 'Undefined index: artist_name' – SHT

Смежные вопросы