Передача HTTP-запроса из Backbone.js в CodeIgniter в БД - PullRequest
4 голосов
/ 10 августа 2011

Я пытаюсь синхронизировать модель в Backbone.js с Codeigniter, используя API RESTful, написанный Philip Sturgeon @ http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/ Я пытаюсь добавить запись в группу ресурсов пользователя.Проблема в том, что я получу новую запись, но заголовок будет 0 вместо «Hello World !!!»Я полагаю, что разбивка находится в 'title' => $ this-> post ('title') в контроллере, потому что, когда я заменил его на 'title' => "FOO", Foo появится в БД.Какие-нибудь мысли?Кстати, я должен указать в качестве URL-адреса в backbone.js

url: "MyApp/index.php/app/user"    or
url: "MyApp/index.php/app/user/id/(xxx)"

Backbone.js

$(document).ready(function(){
var Item = Backbone.Model.extend({

defaults: {
  title: "Hello World!!!"
},

url: "MyApp/index.php/app/user"

});
var item=new Item;  
item.save();

app.php (Controller)

function user_post()
{
    $data=array(
    'id'=> NULL,
    'title'=>$this->post('title')
    );

    $result = $this->App_Model->create($data);
}

app_model.php (модель)

function create($data)
{

    $query = $this->db->insert('data', $data)
}

ОБНОВЛЕНИЕ ::

Это из Chrome Inspector

Метод запроса: POST

Код состояния:200 OK

Запросить источник заголовка просмотра

Принять: application / json, text / javascript, / ;q = 0,01

Соединение: keep-alive

Длина содержимого: 15

Тип содержимого: application / json

X-Requested-With:XMLHttpRequest

Запрос полезной нагрузки {«title»: «мой контент !!»}

Ответы [ 5 ]

5 голосов
/ 08 сентября 2011

У меня тоже были проблемы с этим. Мое решение:

$data = json_decode(file_get_contents('php://input'), true);
$this->site_model->create($data);
2 голосов
/ 21 ноября 2011

Вам необходимо изменить эту строку в вашем контроллере:

$this->post('title')

Для

$this->input->post('title')

или на самом деле вы можете использовать обычный PHP для доступа к глобальным переменным POST, таким как $ _POST ['title'].

Для справки, проверьте Класс ввода CodeIgniter

1 голос
/ 10 августа 2011

Я не слишком уверен, почему ваш параметр title не проходит.Я бы порекомендовал использовать Firebug или Chrome Inspector, чтобы проверить, действительно ли передан заголовок.Оттуда вы можете сузить свою отладку.

Что касается URL, RESTful способ сделать это - использовать MyApp / index.php / app / user / id "для управления одним пользователем

РЕДАКТИРОВАТЬ

Похоже, ваш запрос отправлен нормально. Я бы изучил данные поста. Почему бы не распечатать данные поста и посмотреть, что получено?правильное чтение данных JSON. Вы можете использовать $ decoded = json_decode ($ this-> post ('title')), чтобы превратить их в объект php.

0 голосов
/ 24 ноября 2011

Попробуйте получить доступ

$this->request->body

Он должен содержать содержимое всех значений, которые вы публикуете через Backbone.js

0 голосов
/ 08 сентября 2011

Как насчет использования $this->input->post('title');?( Ссылки )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...