Ajax表单在tpl文件中提交文件类型

时间:2014-05-13 04:18:20

标签: codeigniter smarty

我的应用程序在codeigniter中,带有智能模板。我想提交带有ajax提交功能的表单,但输入类型是用于图片上传的文件,我正在使用serialize(),但它无法提供数据......

我的.tpl文件代码为:

<form method="post" action="" name="form_submit7" id='form_submit7' class="form-horizontal" enctype="multipart/form-data">
    <h4>Logo Uploading</h4>
    <div class="booth-settings">
        <div class="form-group">
            <label class="col-md-4 control-label">Upload logo</label>
            <div class="col-md-7">
                <input type="file" name="expo_company_logo" class="form-control" placeholder="Upload Logo"><br>
            </div>
            <input type="submit" style="margin-top:20px;" id="save-summary" class="btn btn-primary btn-sm pull-right" value="Upload" />
         </div>
    </div>
</form>

,此文件中的ajax函数为:

$('#form_submit7').submit(function(){
    var formVars = $(this).serialize();
    **alert(formVars);**

    $.ajax({
        type:     'POST',
        url:     '{/literal}{$site_url}expo/booth_company_logo/{$id}{literal}',
        data:     formVars,
        cache: false,
        success: function(data)
        {
            //alert(data);
            $('#company-pro').html(data);
            $('#radios').css("display","none");
        }
    });
    return false;
});

但是在警报部分的这个ajax函数中没有任何数据来....

1 个答案:

答案 0 :(得分:0)

我认为您已在配置文件中启用了csrf_protection。如果这样做,在打开和关闭表单标签时使用form_helper的form_open()和form_close()函数,这将自动包含表单内csrf键的隐藏输入标记 示例

{form_open('',['name'=>'form_submit7','id'=>'form_submit7','class'=>'form-horizontal'])}
    <h4>Logo Uploading</h4>
    <div class="booth-settings">
        <div class="form-group">
            <label class="col-md-4 control-label">Upload logo</label>
            <div class="col-md-7">
                <input type="file" name="expo_company_logo" class="form-control" placeholder="Upload Logo"><br>
            </div>
            <input type="submit" style="margin-top:20px;" id="save-summary" class="btn btn-primary btn-sm pull-right" value="Upload" />
         </div>
    </div>
   {form_close()}

也不要忘记先加载form_helper!