JQuery JSON не передает данные Ci должным образом - PullRequest
1 голос
/ 27 декабря 2011

Сценарий, приведенный ниже, работает, насколько я могу судить:

<script type="text/javascript" language="javascript">
$(document).ready(function() {
    $('#add').bind('keypress', function(e) {
        if(e.keyCode == 13){
            var add = $("#add").val();
            $.ajax({
                type: "POST",
                dataType: "JSON",
                url: "<?php echo site_url("home/jsonAddData"); ?>",
                data: add,
                json: {title_posted: true},
                success: function(data){
                    if(data.title_posted == true) { // true means data was successfully posted.
                        $("#success").append("Success").fadeIn(400);
                    } else if(data.title_posted == false) { // false means data failed to post.
                        $("#success").append('Failure').fadeIn(400);
                    }
               }
          });
       }
    });
});
</script>

Проблема, с которой я сталкиваюсь при использовании приведенного ниже кода, состоит в том, что запрос на вставку mysql просто не работает.Он создает строку в таблице и автоинкремент, но по какой-то странной причине он не передаст 'var add' в приведенном выше Javascript скрипту Ci ниже и выполнит вставку в базу данных.Есть мысли или идеи?

<?php
class home extends CI_Controller {
    function __construct() {
        parent::__construct();
    }
    function index() {
        $data = array();
        $data['lists'] = $this->displayList();
        $this->load->view('home', $data);
    }
    function displayList() {
        $str = '';
        $query = $this->db->query("SELECT * FROM data");
        foreach ($query->result() as $row) {
            $b = '<input name="completed" type="checkbox" />';
            $a = $row->title . "<br>";
            $str .= $b.$a;
        }
        return $str;
    }
    function jsonAddData() {
        if($this->input->is_ajax_request()) {
        $title = $this->input->post('title');
        $query = $this->db->query("INSERT INTO data (title) VALUES ('$title')");
        header('Content-type:application/json');
        if($query) echo json_encode(array('title_posted' => true));
        else echo json_encode(array('title_posted' => false));
        }
    }
}
?>

1 Ответ

4 голосов
/ 27 декабря 2011

В

$.ajax({
...
data: {title: add}

Не просто строка

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