Проверка Codeigniter не работает с AJAX, но без AJAX работает хорошо - PullRequest
0 голосов
/ 20 апреля 2019

при отправке формы с использованием проверки кода ijax не работает, пожалуйста, решите эту проблему, я столкнулся с этой проблемой с прошлой недели jQuery код, который я использую для отправки формы

$(function() {
    $("#registratiom_form").on('submit', function(e) {

    e.preventDefault();
    var contactForm = $(this);
    $.ajax({
        url: contactForm.attr('action'),
        type: 'POST',
        data: contactForm.serialize(),
        success: function(response){

        }
    });

    });
});

Контроллер

public function add_account() {
    if($this->form_validation->run('add_account')) {
        $post = $this->input->post();
        unset($post['create_account_submit']);
        $this->load->model('Frontendmodel', 'front');
        if($this->front->add_user($post)){
            $this->session->set_flashdata('message', 'Account Created Successfully !');
            $this->session->set_flashdata('message_class', 'green');
        }
        return redirect('Frontend/login');
    } else {
        $this->login();
    }
}

Ответы [ 2 ]

0 голосов
/ 21 апреля 2019

У вас неправильное представление о том, что может и не может делать ответчик ajax.Одна вещь, которую он не может сделать, это использовать PHP, чтобы браузер перенаправлял на новую страницу.Вам придется отправить подсказку обратно к функции success и затем отреагировать соответствующим образом.

Несколько небольших изменений в ответе @Nancy, и вы должны быть хорошими.

public function add_account()
{
    if($this->form_validation->run('add_account'))
    {
        $post = $this->input->post();
        unset($post['create_account_submit']);
        $this->load->model('Frontendmodel', 'front');
        if($this->front->add_user($post))
        {
            $this->session->set_flashdata('message', 'Account Created Successfully !');
            $this->session->set_flashdata('message_class', 'green');
            echo json_encode(array("result" => 'ok'));
            return;
        }
        $message = '<span class="error">Account Not Created!</span>';
    }
    else
    {
        $message = validation_errors('<span class="error">', '</span>');
    }
    echo json_encode(array("result" => 'invalid', 'message' => $message));
}

В Javascript обрабатывайте различные ответы в функции success $ .ajax

$(function () {
        $("#registratiom_form").on('submit', function (e) {
        var contactForm = $(this);
        e.preventDefault();

        $.ajax({
            url: contactForm.attr('action'),
            type: 'POST',
            dataType: 'json',
            data: contactForm.serialize(),

            success: function (response) {
                console.log(response); // so you can examine what was "echo"ed from the server

                if (response.message=='ok') {
                     // Simulate an HTTP redirect: to the right page after successful login
                     window.location.replace( "https://example.com/frontend/somepage");
                } else {
                    //stay on the same page but show the message in some predefined spot
                    $('#message').html(response.message);
                }
            }
        });
    });
});
0 голосов
/ 20 апреля 2019

Вот только концепция.Я не пробовал codeigniter, но я профессионал php.

Вам нужно будет извлечь записи как json и передать их в ajax.На codeigniter

header('Content-Type: application/x-json; charset=utf-8');
$result =  array("message" =>'Account Created Successfully !');              
echo json_encode($result);

следовательно код может выглядеть следующим образом:

public function add_account(){
        if($this->form_validation->run('add_account')){
            $post = $this->input->post();
            unset($post['create_account_submit']);
            $this->load->model('Frontendmodel', 'front');
            if($this->front->add_user($post)){


            header('Content-Type: application/x-json; charset=utf-8');
            $result =  array("message" =>'ok');              
            echo json_encode($result);


                //$this->session->set_flashdata('message', 'Account Created Successfully !');
                $this->session->set_flashdata('message_class', 'green');
            }
            return redirect('Frontend/login');
        }else{
            $this->login();
        }
    }

в ajax, вы можете установить тип данных на json , чтобы гарантировать, что вы можете получить ответ отсервер, а затем пусть Ajax обрабатывает ответ ....

 $(function() {
        $("#registratiom_form").on('submit', function(e) {

        e.preventDefault();
        var contactForm = $(this);
        $.ajax({
            url: contactForm.attr('action'),
            type: 'POST',
            dataType: 'json',
            data: contactForm.serialize(),
            success: function(response){
            alert(response.message);
            console.log(response.message);

//display success message if submission is successful

           if(response.message =='ok'){
   alert('message submited successfully');


}


            }
        });

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