ous*_*mal 10 javascript php ajax jquery twitter-bootstrap
我正在使用Krajee的Bootstrap文件输入插件通过AJAX调用执行上传.
这里是Krajee插件AJAX部分的链接:Krajee插件AJAX
我正在使用的JS和PHP(codeigniter)代码如下:
JS:
<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>
Run Code Online (Sandbox Code Playgroud)
PHP:
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");
}
}
Run Code Online (Sandbox Code Playgroud)
现在我收到来自PHP的响应无论是错误还是成功作为JSON,我已经浏览了插件文档,我仍然无法找到如何捕获AJAX响应并按照我们在jQuery中的响应行事使用ajax成功函数:
success: function (response) {
//Deal with the server side "response" data.
},
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
小智 13
你可以在这里看一个演示现场演示
如果您希望成功事件触发,请记住将uploadAsync设置为false
示例代码:
JS
$("#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);
});
Run Code Online (Sandbox Code Playgroud)
PHP
$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);
Run Code Online (Sandbox Code Playgroud)
您可以阅读插件文档页面上的事件部分,以了解插件提供的各种事件.
这取决于您如何在插件中设置ajax上传.该插件提供了两种ajax上传模式 - 同步和异步,如文档中所述.如果您将uploadAsync属性设置为,则为异步true.
对于AJAX SUCCESS TRAP:
对于AJAX错误陷阱:
在您的情况下,您已将set uploadAsync设置为true - 因此请使用异步设置/事件.