首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Krajee引导文件输入,捕获AJAX成功响应

Krajee引导文件输入,捕获AJAX成功响应
EN

Stack Overflow用户
提问于 2015-04-14 11:43:05
回答 5查看 42.4K关注 0票数 11

我使用Krajee引导文件输入插件通过AJAX调用执行上传。

以下是指向Krajee插件AJAX部分的链接:Krajee插件AJAX

我使用的JS和PHP代码如下:

联署材料:

代码语言:javascript
复制
<script>        
    $("#file-upload").fileinput({ 
        'allowedFileExtensions' : ['csv'],
        'maxFileSize': 5120,
        'maxFileCount': 1,
        'uploadUrl': 'dashboard/uploader',
        'elErrorContainer': '#errorBlock',
        'uploadAsync': true,
        'msgInvalidFileExtension': 'Invalid extension for file "{name}". Only "{extensions}" files are supported.',
        'uploadExtraData': {csrf_token_name: $("input[name=csrf_token_name]").val()}
    });       
</script>

PHP:

代码语言:javascript
复制
public function uploader(){
    $config['upload_path'] = './csv_uploads/';
    $config['allowed_types'] = 'csv';
    $config['max_size'] = '5120';

    $this->upload->initialize($config);
    if (!$this->upload->do_upload("file-upload")){
        $data['error'] = 'The following error occured : '.$this->upload->display_errors().'Click on "Remove" and try again!';
        echo json_encode($data); 
    } else {
        echo json_encode("success"); 
    }            
}

现在,我从PHP获得了一个响应--无论它是一个错误还是作为JSON成功的--我已经阅读了插件文档,我仍然无法找到如何捕获AJAX响应并根据该响应执行操作,就像我们在jQuery中使用ajax函数所做的那样:

代码语言:javascript
复制
success: function (response) {
            //Deal with the server side "response" data.
         },

我该怎么做?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-04-17 07:38:53

您可以在这里查看一个演示现场演示

如果想要成功事件,请记住设置uploadAsync false

示例代码:

JS

代码语言:javascript
复制
$("#input-id").fileinput({
    showRemove:false,
    showPreview: false,
    uploadUrl: "../xxxx/xxxx/XXXXXX.php", // server upload action
    uploadAsync: false,
    uploadExtraData: function() {
        return {
            bdInteli: xxxx
        };
    }
});

// CATCH RESPONSE
$('#input-id').on('filebatchuploaderror', function(event, data, previewId, index) {
var form = data.form, files = data.files, extra = data.extra, 
    response = data.response, reader = data.reader;
});

$('#input-id').on('filebatchuploadsuccess', function(event, data, previewId, index) {
    var form = data.form, files = data.files, extra = data.extra, 
    response = data.response, reader = data.reader;
    alert (extra.bdInteli + " " +  response.uploaded);
});

PHP

代码语言:javascript
复制
$nombre = $_FILES["ficheroExcel"]["name"];
$bdInteli = $_POST['bdInteli'];
if (move_uploaded_file($_FILES["ficheroExcel"]["tmp_name"], $nombre) ){
    $output = array('uploaded' => 'OK' );
} else {
   $output = array('uploaded' => 'ERROR' );
}
echo json_encode($output); 
票数 15
EN

Stack Overflow用户

发布于 2015-05-23 16:04:19

您可以阅读插件文档页中的events部分来理解插件提供的各种事件。

这取决于如何在插件中设置ajax上传。如文档所述,该插件提供了两个ajax上载模式-同步和异步。如果将uploadAsync属性设置为true,则它是异步的。

对于AJAX成功陷阱:

  • 您可以使用文件上传成功事件进行同步上载。
  • 您可以使用丝状事件进行异步上载。

对于AJAX错误陷阱:

  • 您可以使用文件上传错误事件进行同步上载。
  • 您可以使用丝虫误差事件进行异步上载。

在您的示例中,您已经将uploadAsync设置为true,因此使用异步设置/事件。

票数 8
EN

Stack Overflow用户

发布于 2016-12-14 09:11:22

您可以在test.in my测试中使用此示例代码,我的响应数据如下所示:

代码语言:javascript
复制
response data:
{
"ver":"1.0",
"ret":true,
"errmsg":null,
"errcode":0,
"data":{
    "status":"upload success",
    "originalFilename":"testFileName.txt",
    "fileName":"excelFile",
    "fileType":"text/plain",
    "fileSize":1733
}

 javascript code:
 $('#input-id').on('fileuploaded', function(event, data, previewId, index) {
    var response = data.response;
    if(response.ret ) {
        alert("upload success!"+data.response.data);
    }else{
        alert("upload failed!"+response.errmsg)
    }
    alert('File uploaded triggered'+form+"response:"+response);
    console.info(response.data);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29626410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档