jQuery, AJAX и Codeigniter - форма отправки не работает - PullRequest
0 голосов
/ 13 марта 2012

Я новичок во всем этом AJAX, поэтому я подумал, что хорошее обучение - это создание простого списка TODO.Ниже index.php и соответствующий контроллер.Индекс загружается без ошибок, но когда я отправляю свою задачу, ничего не происходит.Только страница перезагружается.База данных еще пуста.

index.php

<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<h1>Todo</h1>
<form id="add" >
    <input type="input" name="task" />
    <input type="submit" value="Add" /><br />
</form>
<script>

$("form").submit(function() {
    var value = $("input:first").val();

    $.ajax({
        type: "POST",
        url: "<?php echo base_url(); ?>todo/add/" + $("input:first").val(),
        dataType: 'text',
        success: function()
        {
            var newP = $('<p />').text(value);
            $(".todos").append(newP).fadeIn(1000);
        }
    });
    return true;
});

</script>
<div class="todos"></div>
<p>Załadowano w <strong>{elapsed_time}</strong></p>
</body>

controller / todo.php

<?php
class Todo extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('todo_model');
    }

    public function index($type = NULL)
    {
        $this->load->view('todo/index');
    }

    public function add($data)
    {
        $this->Todo_model->add($this->input->xss_clean($data));
    }
}
?>

Обновление: todo_model.php:

  <?php
  class Todo_model extends CI_Model {

      public function __construct()
      {
          parent::__construct();
          $this->load->database();
      }

      public function add($data)
      {
          $this->db->insert('todo', $data);
      }

      public function get()
      {
          return $this->db->get('todo')->result();
      }
  }
  ?>

Ответы [ 3 ]

1 голос
/ 13 марта 2012

Попробуйте использовать это:

public function add($data)
    {
        $this->Todo_model->add($data);
    }

вместо:

public function add($data)
    {
        $this->Todo_model->add($this->input->xss_clean($data));
    }

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

$.ajax({
method: 'POST',
url: '<?php echo base_url(); ?>todo/add/',
data: 'data=' + $("input:first").val(),
success: function(resp) {
             //rest processing
         }
});

КОНТРОЛЛЕР:

public function add()
    {
        $this->Todo_model->add($this->input->post('data'));
    }
0 голосов
/ 14 марта 2012

Попробуйте это, затем отладьте с помощью firebug, щелкнув по значку firebug, затем щелкнув Консоль, чтобы увидеть, что вы отправляете и каков ответ:

var id = 1;

$. Ajax ({

    type: "POST",
    url: "<?php echo base_url(); ?>todo/add/",
    data: {id : id},
    success: function()
    {
        var newP = $('<p />').text(value);
        $(".todos").append(newP).fadeIn(1000);
    }
});
0 голосов
/ 13 марта 2012
  • Вам нужно будет использовать отладчик, например консоль Firebug, чтобы увидеть ответ сервера на ваш запрос.

  • В вашем разделе сценария

$(function(){}

отсутствует, что должно быть обернуто вокруг вашего jQuery

  • используйте что-то подобное, чтобы остановить отправку формы:
if (evt.preventDefault()) {
evt.preventDefault();
}else{
evt.returnValue = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...