Immer 500 Internal Server Error mit jQuery, AJAX und CodeIgniter

Ich versuche, ein Formular Absenden (es ist ein dynamisches Formular mit Feldern Hinzugefügt via jQuery), um CodeIgniter für eine db einfügen. Ein Teil davon funktioniert, der andere Teil nicht.

Hier der jQuery:

function submitForm() {
    $.ajax({
        type: 'POST',
        url: '/raffle/save/',
        data: $('#raffle').serialize(),
        success: function (response) {
            alert(response);
        },
        error: function() {
            alert('Failed'); //This is what I get unless I comment out the entry insert
        }
    });
}

Die CI-controller:

class Raffle extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->model('raffle_model');
        $this->load->library('form_validation');
    }

    public function index() {
        $data['title'] = 'Create a Raffle';
        $this->load->view('header', $data);
        $this->load->view('raffles/create_view', $data);
        $this->load->view('raffles/bottombar_view', $data);
        $this->load->view('footer', $data);
    }

    public function save() {
        foreach($_POST as $k => $v) {
            if($k == 'entrant' || $k == 'tickets') {
                foreach ($v as $i => $vector) {
                    $this->form_validation->set_rules('entrant[' . $i . ']', 'Entrant name', 'trim|required|min_length[1]|max_length[100]|xss_clean');
                    $this->form_validation->set_rules('tickets[' . $i . ']', 'Number of tickets', 'trim|required|max_length[2]|is_natural_no_zero|xss_clean');
                }
            } else {
                $this->form_validation->set_rules('raffle-name', 'Raffle name', 'trim|required|min_length[4]|max_length[100]|xss_clean');
                $this->form_validation->set_rules('winners', 'Number of winners', 'trim|required|max_length[2]|is_natural_no_zero|xss_clean');
            }
        }

        if($this->form_validation->run() == FALSE) {
            echo 'Validation failure!';
        } else {
            if($this->raffle_model->add_raffle()) { //It does pass validation and goes to the model
                echo 'Data added successfully!';
            }
        }
    }
}

Und die CI-Modell:

class Raffle_model extends CI_Model {
    public function __construct() {
        parent::__construct();
    }

    public function add_raffle() {
        //This works
        $meta = array(
            'user_id'    => $this->session->userdata('user_id'),
            'name'       => $this->input->post('raffle-name'),
            'winners'    => $this->input->post('winners'),
            'created_ip' => $_SERVER['REMOTE_ADDR']
        );

        //This works and is a multidimensional array for insert_batch()
        $entrants = array(
            array(
                'date'      => date(DATE_ATOM),
                'raffle_id' => '1'
            )
        );

        foreach($_POST['entrant'] as $name => $n) {
            array_push($entrants,
                array(
                    'name'    => $n,
                    'tickets' => $_POST['tickets'][$name]
                )
            );
        }

        $this->db->insert('raffle', $meta);
        $this->db->insert_batch('entry', $entrants); //This one returns error 500

        return true;
    }
}

Hier ist das problem: dem Absenden des Formulars die meta Teil nicht gespeichert raffle Tabelle, aber die entrants Teil nicht gespeichert entry Tabelle. Ich habe versucht, mit einer einfachen dummy-array (sample-Daten, keine post-Daten, keine loops), um zu sehen, ob es funktionieren würde, aber es immer noch nicht. Console logs sagen POST http://rafflegrab.dev/raffle/save/500 (Internal Server Error).

CSRF-off ist in der CI-Konfiguration.

Die Tabelle ist wie folgt aufgebaut:

  1. Tabelle-name: Eintrag
  2. InnoDB
  3. id - bigint - (12) - UNSIGNED - not_null - AUTO_INCREMENT - PRIMARY
  4. user_id - int(10) - UNSIGNED
  5. name - varchar(100)
  6. tickets - smallint(5) - UNSIGNED
  7. Datum - datetime -
  8. raffle_id - int(10) - UNSIGNED
InformationsquelleAutor Clowerweb | 2012-06-11
Schreibe einen Kommentar