问题是,当我使用ajax调用此操作时,我无法在控制器/操作中获取CMultifileUpload实例
这是我的代码 在我看来
<?php $form=$this->beginWidget('CActiveForm', array('id' => 'form',
'enableAjaxValidation' => false, 'htmlOptions' => array('enctype' => 'multipart/form-data'),)); ?>
<div class="row">
<?php
$this -> widget('CMultiFileUpload', array('name' => 'wupload', 'accept' => 'zip', \
'duplicate' => 'Duplicate file!', // useful, i think
'denied' => 'Invalid file type', // useful, i think
'max' => 1
));
echo CHtml::button('upload', array('onclick'=>'send()',));
?>
</div>
<?php $this->endWidget(); ?>
这是我在我的控制器中的动作
public function actionUpload(){
$file = CUploadedFile::getInstancesByName('wupload');
var_dump($file);
}
这是我的脚本功能
function send() {
var data = $("#form").serialize();
$.ajax({
type : 'POST',
url : 'upload',
data : data,
success : function(data) {
alert(data);
},
error : function(data) {// if error occured
alert("Error occured.please try again " + data);
},
dataType : 'html'
});
}
现在警报显示后我收到的所有内容都是
array(0){
}
我无法看到我选择的文件,不像我使用普通的提交按钮,每件事情都正常,我需要有人告诉我这里我做错了什么?
答案 0 :(得分:0)
您需要使用FormData对象(注意:对于IE,它只能在IE10 +中使用)。
这里有很多例子,底部有一个jQuery。