Я возьму на себя смелость ответить на этот вопрос, потому что не думаю, что понимаю это.
Прежде всего, я не знаю много о $.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.
Я думаю, что это, вероятно, лучшее решение, и я надеюсь, что это поможет немного объяснить, что происходит. Я надеюсь.