上传图片与blueimp和功能结构相似


Uploading image with blueimp and function structure similar

这是我的结构:

<html>
<head>
    <title></title>
    <meta charset="utf-8">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="vendor/jquery.ui.widget.js"></script>
    <script src="jquery.iframe-transport.js"></script>
    <script src="jquery.fileupload.js"></script>
    <script src="main.js"></script>
</head>
<body>
    <div id="main">
    <input type='submit' value='Go' onClick='open_form();' />

</div>
<script>
$(function () {
    $('#fileupload').fileupload({
        url: 'upload.php',
        dataType: 'json',
        done: function (e, data) {
            $.each(data.result.files, function (index, file) {
                $('<p/>').text(file.name).appendTo(document.body);
            });
        }
    });
});
</script>
</body>
</html>

main.js

function open_form() {
   $.get('test.php?rand',function(response){
        $('#main').html(response);
    });
};

test.php

<input id="fileupload" type="file" name="files[]" data-url="server/php/" multiple>

上传.php

<?php
$data = array('name' => 'Test');
echo json_encode('files' = > $data);

没有发生任何事情或触发上传。。。我认为这可能是因为函数ajax请求函数调用,因为显示了"选择文件",但当我选择一个文件时,什么都没有发生。

https://i.stack.imgur.com/EKme2.png

当#fileupload-div不存在时,您尝试将fileupload-plugin附加到该div。文件中的事件过程是:

  1. 找到#fileupload并将fileupload插件附加到其中
  2. 将加载到主窗体中的外部数据附加到按钮

然后,你点击一个按钮,#fileupload被加载,但没有附加插件。

解决这个问题的选项之一是在加载层后执行附加过程,例如使main.js看起来像这样:

function open_form() {
    $.get('test.php?rand',function(response){
        $('#main').html(response);
        $('#fileupload').fileupload({
            url: 'upload.php',
            dataType: 'json',
                    done: function (e, data) {
                $.each(data.result.files, function (index, file) {
                    $('<p/>').text(file.name).appendTo(document.body);
                });
            }
        });
    });
};