JQuery PostCodigniter проверки - PullRequest
       14

JQuery PostCodigniter проверки

2 голосов
/ 25 февраля 2010

Мы используем jquery для загрузки () формы в div

Затем мы используем jquery для .post (), который формируется для контроллера codeigniter, т.е. / app / post

Затем мы хотим, чтобы Codeigniter выполнил проверку, но не знали, как вернуться на страницу для отображения ошибок проверки? Если re re .load () контроллер не перезапустит объект, и мы потеряем данные?

Неправильно ли мы подходим к этому?

Ответы [ 2 ]

6 голосов
/ 25 февраля 2010

Я возьму на себя смелость ответить на этот вопрос, потому что не думаю, что понимаю это.

Прежде всего, я не знаю много о $.post(), поэтому я собираюсь ответить на ваш вопрос, как если бы вы использовали вас $.ajax(), потому что это то, что я знаю, и я уверен, что они похоже.

Затем мы хотим, чтобы Codeigniter выполнял проверка, но не были уверены, как вернуться на страницу для отображения ошибки проверки?

Вы не возвращаетесь на страницу для отображения ошибок, вы выводите их так, чтобы jQuery мог получать выходные данные (например, файл представления CI), и затем вы могли обрабатывать результат так, как вам хочется.

Используя $.ajax(), вот что я бы сделал ..

Контроллер CI:

if( ! $this->form_validation->run($my_form_rules))
{
    // Set the status header so $.ajax() recognizes it as an error
    $this->output->set_status_header(400);

    // The error string will be available to the $.ajax() error
    // function in the javascript below as data.responseText
    echo validation_errors();

    exit();
}
else
{
    // Do something with the post data
    $result = $this->do_something();

    // Set the status header so $.ajax(0 recognizes a success
    // and set the header to declare a json response
    $this->output->set_status_header(200);
    $this->output->set_header('Content-type: application/json');

    // Send the response data as json which will be availible as
    // var.whatever to the $.ajax() success function
    echo json_encode($result);

    exit();
}

Аякс:

$.ajax({
    data: myPostDataObj,
    dataType: "json",
    type: "POST",
    success: function(data) {
        alert(data.message);
    },
    error: function(data) {
        alert(data.responseText);
    }
});

Вы можете узнать больше о $.ajax() в jQuery здесь , но, в основном, вы отправляете данные почты на любой контроллер, который вы настроили, он принимает эти данные, запускает их через процесс проверки, и если это не удается, он выводит некоторый стандартный текст, который ajax отправит вашей функции ошибки как var.responseText.

Если он проходит проверку, вы будете делать что-то с данными публикации, а затем возвращать любые результаты, которые вы хотите, в качестве объекта json, который можно легко использовать в вашей функции javascript.

Я думаю, что это, вероятно, лучшее решение, и я надеюсь, что это поможет немного объяснить, что происходит. Я надеюсь.

1 голос
/ 25 февраля 2010

Сохраните сообщения проверки в сеансах от вашего контроллера, а затем отобразите их на соответствующем представлении / странице, но если все проверки выполняются пользователем правильно, вы должны снова уничтожить сеанс.

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