0

问题是当我使用 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){
}

我看不到我选择的文件,不像我使用普通的提交按钮,每件事都正常工作,我需要有人告诉我我在这里做错了什么?

4

1 回答 1

0

您需要使用 FormData 对象(注意:对于 IE,它仅适用于 IE10+)。

这里有很多示例,底部有一个 jQuery。

https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects?redirectlocale=en-US&redirectslug=Web%2FAPI%2FFormData%2FUsing_FormData_Objects

于 2013-09-26T08:48:08.580 回答