动态表单Ajax提交

前段部分代码:

 <form class="myform" action="<?=$this->act?>">
            <div class="addclass">
                <div class="modify_list mb10">
                    <dl>
                        <dt><label for="classname">*班级名称</label></dt>
                        <dd><input type="text" name="nickname[]" class="required" data_value="班级名称" value="" placeholder="请输入班级名称" data-role="none"></dd>
                    </dl>
                </div>
                <div class="modify_list mb20">
                    <dl>
                        <dt>*班级类型</dt>
                        <dd>
                            <ul class="clearfix radio">
                                <?php foreach($this->model('Class')->getTypes() as $v):?>
                                    <li data_type="<?=$v['id']?>">< ?=$v['name']?>班</li>
                                <?php endforeach?>
                                <input type="hidden" value="" name="type_id[]" class="required" data_value="班级类型">
                            </ul>
                        </dd>
                    </dl>
                    <dl>
                        <dt>开班时间</dt>
                        <dd><input class="mydate1" type="date" name="open_time[]" placeholder="请选择" data-role="none" value=""></dd>
                    </dl>
                </div>
            </div>
            <div class="pl10 pr10 pb10"><a href="jacascript:;" onclick="addclass()">继续添加</a></div>
            <div class="pl10 pr10 pb10"><input type="submit" value="提交" data-role="none"></div>
    </article>
</form>
<script>
    function move(){
        $(".radio li").on('click', function () {
            $(this).siblings('li').removeClass('active');
            $(this).addClass('active');
            $(this).siblings('input').val($(this).attr('data_type'));
        })
    }
    move();
    function addclass() {
        $('.addclass').last().clone().appendTo($('.addclass').last());
        move();
    }
    $(".myform").submit(function(){
        var error=0;
        var url=$(this).attr('action');
        $('.required').each(function() {
            if($(this).val() == ""||$(this).val() == 0){			
                $.prompt($(this).attr("data_value")+"不能为空");
                error++;
                return false;
            }
    	});
        if(error==0)
        {			
            $('input[type="submit"]').attr('disabled',true);
            $.post(url,$(this).serialize(),function(data){			
                json = JSON.parse(data);
                $.prompt(json.message,json.url);
                $('input[type="submit"]').attr('disabled',false);                
            });
        }
        return false;
    }); 
jQuery.extend({
    prompt:function(title,url) {
        var error = '<div class="error_content" style="background:#000;color:#fff;line-height:44px;height:44px;word-wrap: break-word;position: fixed;left: 0;top: 0;width: 100%;margin:0;text-align: center;display:none;z-index:100000;">名称不能为空</div>';
        $(".error").remove();
        $(".error_content").remove();
        $(document.body).append(error);
        $(".error_content").slideDown(500,function(){
                $(".error_content").show();
        });
        $(".error_content").html(title);
        setTimeout(function(){
            $(".error_content").slideUp(500,function(){
                    $(".error_content").remove();
            });
            if(typeof(url)!='undefined'&&url!=""&&url!=null){
                    window.location.href=url;
            }
        },2000);
    }
});
</script>

后端PHP代码:

        if($this->request->getIsAjaxRequest()){
            if(!empty($_POST) && is_array($_POST['nickname']) && is_array($_POST['type_id']) && is_array($_POST['open_time'])) {
                $error_num = 0;
                for ($i = 0; $i < count($_POST['nickname']); $i++) {
                    $post['nickname'] = htmlspecialchars($_POST['nickname'][$i]);
                    $post['type_id'] = intval($_POST['type_id'][$i]);
                    $post['open_time'] = htmlspecialchars($_POST['open_time'][$i]);
                    $post['school_id'] = $this->info['school_id'];
                    $is = $this->class->add($post);
                    if(!$is) $error_num++;
                }
            }

            if($error_num == 0){
                parent::toJson('添加成功!',1,'/index/register/finish/');
            }else{
                parent::toJson($this->class->error,0);
            }
        }