#php #json
Вопрос:
приведенный ниже php — код использует codeigniter для выбора в бд, поэтому массив должен быть преобразован, для этого я использую приведенный ниже код, но он не преобразует json (json указан в gist), поэтому он не преобразуется в массив json.
Основная ссылка json: https://gist.github.com/riccardopirani/2a48e8e62fa65512fd487de0ca82bc79
Controller.php
class Api2 extends CI_Controller {
function __construct() {
parent::__construct();
$this->load->model('Book_model');
}
function index() {
header('Content-Type: application/json');
//print link element
$array = array(
"foo" => "bar",
"bar" => "foo",
);
$values["data"] = $this->Book_model->get_all_books();
/*foreach($_GET as $key => $value){
echo $key . " : " . $value . "n";
} */
//Return data
// $data = json_encode($tempdata);
print_r(json_encode($values["data"]));
return (json_encode($values["data"]));
Model.php
<?php
class Book_model extends CI_Model
{
function __construct()
{
parent::__construct();
}
/*
* Get book by id
*/
function get_book($id)
{
return $this->db->get_where('books',array('id'=>$id))->row_array();
}
/*
* Get all books
*/
public function get_all_books()
{
$this->db->order_by('id', 'desc');
return $this->db->get('books')->result_array();
}
/*
* function to add new book
*/
function add_book($params)
{
$this->db->insert('books',$params);
return $this->db->insert_id();
}
/*
* function to update book
*/
function update_book($id,$params)
{
$this->db->where('id',$id);
return $this->db->update('books',$params);
}
/*
* function to delete book
*/
function delete_book($id)
{
return $this->db->delete('books',array('id'=>$id));
}
}
Ответ №1:
Я думаю, что вам следует поставить echo
вместо return
контроллера Api2
public function index()
{
header('Content-Type: Application/json');
$values['data'] = $this->Book_model->get_all_books();
echo json_encode($values['data']);
}
или вы можете использовать встроенную функцию output
из CodeIgniter
public function index()
{
$values['data'] = $this->Book_model->get_all_books();
$this->output
->set_content_type('application/json', 'utf8')
->set_output( json_encode($values['data']) );
}
Комментарии:
1. Я пробовал ваши решения, но они не работают, от остальных звонков ничего не возвращается
2. вы уверены, что дважды проверяете имя функции и конечную точку при вызове API?