我的应用程序在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函数中没有任何数据来....
答案 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!