codeigniter ajax表单提交

Sem*_*iev 2 ajax jquery codeigniter form-submit preventdefault

我有一个表单(通过codeigniter制作),我想用ajax onClick提交.表单提交没有Ajax并且不允许我这样做event.preventDefault();

jQuery文件

$('#register_submit').click(function(e){//
   e.preventDefault();
    var first_name = $('#register_form1').val();


    $.ajax({
        type: "POST", 
        async: false, 
        url: base_url+"register/registration_val",   
        data: "register_first_name="+first_name,
        success: function(data){
            $('#inferiz').html(data);
        },
        error: function(){alert('error');}
    }); 

});
Run Code Online (Sandbox Code Playgroud)

//控制器工作正常.名称寄存器,我POST的功能是registration_val

HTML文件

 <form method="POST" action='<?php echo site_url('/register/registration_val'); ?>' id='register_form' >
   <input type="login" name="register_first_name" id="register_form1">
   <input type='submit' value="Register" id='register_submit'>
 </form>
Run Code Online (Sandbox Code Playgroud)

问题是,当我点击SUBMIT按钮时,jQuery不会完成它的工作,而是表单将自己提交给控制器并发出错误消息.
我无法阻止表单提交(我认为可以解决问题),Click事件完全被忽略.提前致谢

gdo*_*ica 7

试试你的运气submit而不是click:

$('form').submit(function(e){//
   e.preventDefault();
    var first_name = $('#register_form1').val();


    $.ajax({
        type: "POST", 
        async: false, 
        url: base_url+"register/registration_val",   
        data: "register_first_name="+first_name,
        success: function(data){
            $('#inferiz').html(data);
        },
        error: function(){alert('error');}
    });     
});
Run Code Online (Sandbox Code Playgroud)

如果从有id替换'form''#{formId}'.

笔记:

  • 代码应该在DOM ready事件回调中.
  • 如果DOM准备好的表单不存在,则应使用委托事件.

像这样:

$('body').on('submit', 'form', function(e){
   e.preventDefault();
    var first_name = $('#register_form1').val();    

    $.ajax({
        type: "POST", 
        async: false, 
        url: base_url+"register/registration_val",   
        data: "register_first_name="+first_name,
        success: function(data){
            $('#inferiz').html(data);
        },
        error: function(){alert('error');}
    });     
});
Run Code Online (Sandbox Code Playgroud)

只需body用更接近的静态元素(如果有的话)替换以提高性能.

祝好运!