POST'ing JSON с Codeigniter возвращает ошибку 500 - PullRequest
2 голосов
/ 18 июля 2011

У меня проблемы с возвратом данных с моего контроллера с помощью функции ajax post.Здесь происходит то, что пользователь вводит номер стиля, передает его в контроллер.Контроллер получает отправленное значение, запрашивает базу данных и возвращает результаты контроллеру, затем контроллер возвращает массив, который я затем кодирую в json.Но я продолжаю получать 500 Внутренняя ошибка сервера ???

Вот мой контроллер

//return schools based on style id
public function search() {
    $input = json_decode($this->input->post('obj'));
    $style_id = $input['style_id'];
    $parent_id = $input['parent_id'];
    $data = array();
    if ($q = $this->page_model->search_results($style_id, $parent_id)) {
        $data = $q;
    }
    echo json_encode($data);
}

Вот моя модель

//get all entries
function search_results($style_id, $parent_id) {
    $options = array(
        'Style' => $style_id,
        'Parent_ID' => $parent_id
    );
    $this->db->select('*');
    $this->db->from('pages');
    $this->db->join('entry', 'pages.Page_ID = entry.Parent_Page_ID', 'inner');
    $this->db->where($options);
    $q = $this->db->get();

    if ($q->num_rows() > 0) {
        return $q->result();
    }

}

Вот мой JavaScript

//dress style search
$($searchBtn).click(function(event) {
    var style_id,
         parent_id,
         obj = {};
    //get the value of the input fields
    searchVal = event.currentTarget.previousSibling.value;
    parentID = event.currentTarget.parentElement.childNodes[3].value;
    //The object to be passed to the controller
    obj = { 'style_id' : searchVal, 'parent_id' : parentID };
    //POST the values in json notation, return the search results in json notation
    $.post(base_url + 'index.php/page/search',
            obj,
            function(data) {
                console.log(data);
            },
            'json');
    return false;
});

base_url = http://localhost:8888/lexsreg

КСТАТИ - Если я закомментирую возвращаемое значение false, я получаю строку json, отраженную от моего контроллера.

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

Ответы [ 2 ]

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

Вы должны включить токен csrf.Есть несколько способов сделать это, как описано в этих двух блогах.

http://aymsystems.com/ajax-csrf-protection-codeigniter-20

http://codeigniter.com/forums/viewthread/176318/

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

Ну, первый шаг - убедиться, что вы загружены page_model.Тогда я бы удостоверился, что вы получаете правильные столбцы в предложении where - нужно ли их идентифицировать по <table-name>.?

Затем начальная отладка CI начинается с log_message :log_message('DEBUG', $this->input->post('obj')); с последующим log_message('DEBUG', json_decode($this->input->post('obj')));.

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