Получение jquery ajax для работы с codeigniter - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь добавить запись в свою базу данных с помощью ajax, но когда я пробую свой код, я получаю код ошибки 500 HTTP;Это функция, которую я отправляю в контроллер

 function sections_add() {
         $this->load->model('section_model');

         $name = $_POST['name'];
         $slug =  $_POST['slug'];
         $sec = $_POST['description'];

         $options = array(
            "description"=>$sec,
            "slug"=>$slug,
            "category"=>$name
         );

         $this->section_model->add($options);
     }

И эта функция в модели для добавления записей

function add($options = array()) {
             $this->db->insert('sections',$options);
             if($this->db->affected_rows() > 0) {
                    return true;
                }
                return false;
        }

И это мой JQuery код NB: base_url определен моей базыurl

$(function () {
    $('#save_btn').click(function(e) {
        var name = $('#name').val();
        var slug = $('#slug').val();
        var des = $('#description').val();

        var data = "name="+name+"slug="+slug+"description="+des;
        var url = base_url+"admin/sections/add";
        $.ajax({
            url:url,
            type:'post',
            cache:false,
            data:data,
            success:function() {
                alert('Success');
            }
        });
        e.preventDefault()
    });
});

Пожалуйста, что мне делать, чтобы избавиться от ошибки http 500

Ответы [ 3 ]

0 голосов
/ 18 июля 2011

У вас включена защита CSRF? Если это так, вы должны добавить csrf_token в POST.

Если вы создаете формы с помощью form_open из form_helper, найдите скрытую переменную csrf_token_name. В конце концов, вы можете получить все данные формы с помощью http://api.jquery.com/serialize/

0 голосов
/ 18 июля 2011

Может быть, я что-то упускаю, но я не понимаю, как вы отвечаете на результаты. Нет представления, ничего не повторяется, попробуйте добавить ...

            $data['success'] = $this->section_model->add($options)?1:0;
            echo json_encode($data);

в section_add ()

0 голосов
/ 18 июля 2011

Просто глядя на это быстро, похоже, что вы отправляете на:

админ / разделы / добавить

в отличие от имени вашего метода section_add:

admin / section_add

но это вернет 404, а не 500. Если имя вашего метода правильное, попробуйте передать ваши данные как:

var data = {
       name: $('#name').val(),
       slug: $('#slug').val(),
       des: $('#description').val()
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...