как связать кодигнитер с ajax - PullRequest
0 голосов
/ 09 октября 2019

Мне нужно соединить codeigniter с постом ajax

  • Первая проблема заключалась в использовании jquery.min.js, если вы используете ajax, вы не можете использовать эту версию jquery, вам нужно использоватьполная версия.
  • Затем я попытался выполнить весь код jquery по частям, чтобы протестировать его функциональность.
  • Я думаю, что проблема в URL-адресе вызова ajax или в контроллере

это мой взгляд (очень просто)

<form action="#" id="form">
    <label for="">nombre</label>
    <input type="text" name="nombre" id="nombre">

    <label for="">apellido</label>
    <input type="text" name="apellido" id="apellido">

    <label for="">cedula</label>
    <input type="text" name="cedula" id="cedula">

    <label for="">direccion</label>
    <input type="text" name="direccion" id="direccion"><br>

    <button class="btn btn-info" id="btn" type="submit">enviar</button>
</form>

jquery code

$(document).ready(function () {
    $("#btn").on('click', function (e) {
    // var data = $("#form").serialize();
    // alert("datos:" + data);
        $.ajax({
            url: '<?php echo base_url('myController/formAjaxCrear')?>',
            type: 'POST',
            data: $("#form").serialize(),
            dataType: 'json',
            success: function (data) {
                alert(data.nombre);
            },
            error: function () {
                alert("something is wrong");
            }

        });
    });
});

мой контроллер в файле myController

public function formAjaxCrear(){
    $data = [
        'nombre' => $this -> input -> post('nombre'),
        'apellido' => $this -> input -> post('apellido'),
        'cedula' => $this -> input -> post('cedula'),
        'direccion' => $this -> input -> post('cedula'),
    ];

    echo json_encode($data);

}

Я ожидал получить во всплывающем окне браузера: Джессика , если я заполню вводную цифру этой информацией. Почему я получаю только сообщение об ошибке?

1 Ответ

0 голосов
/ 09 октября 2019

Внесите следующие изменения в свой код

  1. У вас есть тип кнопки как отправить, это фактически отправка формы. Вы можете изменить это двумя способами. Измените метод JS

a)

    $("#btn").on('click', function (e) {
         e.preventDefault();  //This will prevent submitting of form.

b) Вы также можете сделать это, изменив тип кнопки с submit на просто button

<button class="btn btn-info" id="btn" type="submit">enviar</button>

изменить выше на

<button class="btn btn-info" id="btn" type="button">enviar</button>
Для улучшения стандартов вы должны явно указать CodeIgnitor возвращать данные AJAX. Вы можете сделать это, внеся следующие изменения в метод formAjaxCrear.
  header('Content-Type: application/json'); //This sends Headers and make sure that data type returned is JSON.
  echo json_encode($data);

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