我有问题,我不知道如何解决它。
重点是我想通过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中的我只能看到
({})
我仍然不知道如何解决它:(
答案 0 :(得分:4)
只是做:
echo $new_filename;
在PHP脚本中。
顺便说一下,您尝试创建的HTML无效。 <li>
必须位于<ul>
或<ol>
内。但$('#attach')
是<div>
。
此外,innerHTML
是一个DOM属性,您不能将它与jQuery对象一起使用。它应该是:
$("#attach").html("<li>"+data+"</li>");