从php发送变量到jquery - 文件上传脚本

时间:2018-01-12 10:09:48

标签: javascript php jquery file-upload

我有问题,我不知道如何解决它。

重点是我想通过php(upload.php)将文件上传到服务器,生成新文件名并将新文件名传递给我的窗口(upload.html)

这是我的upload.html文件,其中包含用于上传文件的表单

<h1>Choose attachement</h1>

<form enctype="multipart/form-data">
    <input id="file" type="file">
    <input type="button" id="upload" value="Upload">
</form>

//list of already attached files (here it is empty)
    <div id="attach"></div>

//information if file was uploaded
    <span id="n" style="display:none;">File was uploaded</span>

//javascript for handling upload
        <script src="upload.js"></script>

我使用jquery传递一些信息并处理上传,这是upload.js文件

$(document).ready(function() {
$('#upload').on('click', function() {
    $("#n").css('display', 'none');
    var file_data = $('#file').prop('files')[0];  
    var form_data = new FormData();  
    //get actual filename
    var filename = $('#file').val();
    form_data.append('file', file_data);
    $.ajax({
                url: 'upload.php', 
                dataType: 'text',  
                cache: false,
                contentType: false,
                processData: false,
                data: form_data,                         
                type: 'post',
                success: function(data){
                    $("#n").css('display', 'inline');
                    $('#attach').html("<span>" + filename + "</span>");
                }
     });
    });
});

在upload.php这里我将文件上传到服务器

//get actual filename
$filename = $_FILES['file']['name']; 

//generate original file name using specific function
$new_filename = generate_original_name(); 

//upload file using new filename
move_uploaded_file($_FILES['file']['tmp_name'], '/uploads/' . $new_filename);

我想要做的是传递使用php生成的$ new_filename变量,我想将它传递给我的jquery update.js脚本,将其打印在我上传的文件列表中。我试过json和其他方式,但没有。有谁知道怎么做?

毕竟你做了回复..

我在update.php中添加了这些行

header('Content-Type: application/json');
echo json_encode(array('foo' => 'bar'));

并在update.js中添加了

var fo = $('#foo');
window.opener.document.getElementById('attach').HTML += fo;

然后在div中有[object Object]

使用后

window.opener.document.getElementById('attach').HTML += fo.toSource();
div中的

我只能看到

({})

我仍然不知道如何解决它:(

1 个答案:

答案 0 :(得分:4)

只是做:

echo $new_filename;

在PHP脚本中。

顺便说一下,您尝试创建的HTML无效。 <li>必须位于<ul><ol>内。但$('#attach')<div>

此外,innerHTML是一个DOM属性,您不能将它与jQuery对象一起使用。它应该是:

$("#attach").html("<li>"+data+"</li>");