ajax jquery を介してフォームを送信する際に問題が発生しました。私の問題は、ページを更新せずにjqueryモーダルフォームをcodeigniterコントローラーに送信する方法ですか? 同時に、送信されたデータに codeigniter コントローラー (検証) からのエラーが含まれている場合、jquery はどのようにエラー メッセージを表示しますか?
ここに私のコードがあります
js スクリプト
$(function() {
// Dialog
$('#dialog').dialog({
autoOpen: false,
width: 380,
height:300,
buttons: {
'Save': function() {
function submitForm(){
$.ajax({
type : 'POST',
url : 'http://localhost/hmvc/index.php/sysconfig/sysmenu/create',
data : $('#menu_form').serialize(),
success : function(data) {
// Show OK message
alert('ok');
},
error: function(error){
// Show error message
alert('error');
}
});
return false;
}
},
'Cancel': function() {
$(this).dialog("close");
}
}
});
// Dialog Link
$('#dialog_link').click(function(){
$('#dialog').dialog('open');
return false;
});
});
コントローラ
function _validate()
{
$config = array(
array(
'field'=>'sysmenu_name',
'label'=>'menu name',
'rules'=>'trim|max_length[30]|htmlspecialchars|required|xss_clean'
),
array(
'field'=>'sysmenu_link',
'label'=>'hyperlink',
'rules'=>'trim|max_length[100]|htmlspecialchars|required|xss_clean'
),
array(
'field'=>'sysmenu_sequence',
'label'=>'sequence',
'rules'=>'trim|max_length[2]|htmlspecialchars|required|xss_clean'
)
);
$this->form_validation->set_rules($config);
$this->form_validation->set_error_delimiters('<div class="error_msg">', '</div>');
}
function create()
{
if($this->input->is_ajax_request())
{
$this->_validate();
if($this->form_validation->run($this)==FALSE)
{
echo validation_errors();
}
} else {
$menu_level = getValue_where('sysmenu_level',"sysmenu_id ='".$this->input->post('sysmenu_parent_id')."'",'base_sysmenu') + 1;
$data = array(
'sysmenu_name'=>$this->input->post('sysmenu_name'),
'sysmenu_parent_id'=>$this->input->post('sysmenu_parent_id'),
'sysmenu_link'=>$this->input->post('sysmenu_link'),
'sysmenu_level'=>$menu_level,
'sysmenu_sequence'=>$this->input->post('sysmenu_sequence')
);
$this->sysmenu_model->insert_menu($data);
$this->index();
}
}
見る
<div id="dialog" title="<?php echo $this->lang->line('add_new_menu') ?>">
<div class="notice_msg"><?php echo $this->lang->line('compulsary'); ?></div><br />
<div class="errors"><!-- append the error message here --></div>
<?php echo form_open('','class=normal_form name=create_menu id=menu_form'); ?>
<label><?php echo $this->lang->line('menu_name'); ?></label><?php echo form_input('sysmenu_name'); ?>*<br />
<label><?php echo $this->lang->line('parent_menu'); ?></label><?php //echo form_input('sysmenu_parent_id'); ?><?php echo form_dropdown('sysmenu_parent_id', dropdown_where('sysmenu_id','sysmenu_name',"sysmenu_level = 1",'base_sysmenu'), ''); ?><br />
<label><?php echo $this->lang->line('menu_link'); ?></label><?php echo form_input('sysmenu_link'); ?>*<br />
<label><?php echo $this->lang->line('menu_sequence'); ?></label><?php echo form_input('sysmenu_sequence','','size=12, maxlength=2'); ?>*<br />
<label> </label><?php //echo form_submit('data',$this->lang->line('btn_save')); ?>
<?php echo form_close(); ?>