черт возьми, ребята,
Я недавно работал над ajax, и у меня возникла проблема при использовании его с библиотекой проверки формы codeigniter. Я использовал пример, который инструмент генерирует в функции http://formtorch.geekhut.org/.
Теперь ajax работает отлично и возвращает данные правильно, когда я использую функцию json_encode()
с фиктивными данными, но при проверке в примере используется библиотека validation
вместо библиотеки form_validation
, которая кажется более старой версией.
Для этого проверка не работала с ajax в этом примере, в частности, функция $this->form_validation->run()
заставляет ajax не возвращать результата, даже если я эхо-фальсифицирую данные, используя json_encode()
в начале create_course()
.
Итак, что не так с проверкой с помощью ajax, и объясните мне, как данные, отправленные с помощью ajax, получены контроллером.
так вот мой код:
function create_course()
{
$this->form_validation->set_rules('course_code', 'course_code', 'trim|xss_clean|required');
$this->form_validation->set_rules('name', 'name', 'xss_clean|required');
// .. etc
if ($this->form_validation->run()) {
// validation ok
$data['course_code'] = $this->form_validation->set_value('course_code');
$data['name'] = $this->form_validation->set_value('name');
// ... etc
if ($this->models_facade->create_course($user_id,$data)) { // success
$data = array( 'profile_change' => $this->lang->line('profile_change'));
} else { // fail
$data = array( 'profile_change_error' => $this->lang->line('profile_change_error'));
}
}
else
{
$data = array(
'course_code' => $this->form_validation->course_code_error,
'name' => $this->form_validation->name_error
);
}
echo json_encode($data);
}
и это функция Jquery Ajax
$(function(){
$("#submit").click(function(){
var course_code = $("#course_code").val();
var name = $("#name").val();
// etc
$.post("<?php echo base_url() ?>home/create_course", course_code:course_code, name:name},
function(data){
function(data){
alert(data.data);
$("#course_code_error").html(data.course_code);
$("#name_error").html(data.name);
},'json');
});
return false;
* * 1 022});