我试图在PHP文件上传中调用Javascript函数。 PHP方法取自这里:
<?php
$post_id = $_GET['post_id'];
$ds = DIRECTORY_SEPARATOR;
$storeFolder = '/images/$post_id';
if (!empty($_FILES)) {
$tempFile = $_FILES['file']['tmp_name'];
$targetPath = dirname( __FILE__ ) . $ds. $storeFolder . $ds;
$targetFile = $targetPath. $_FILES['file']['name'];
move_uploaded_file($tempFile,$targetFile);
echo "<script type='text/javascript'>showfeaturedimg('$post_id');</script>";
}
?>
文件上传没有问题。
我尝试了多种方法,我在不同的论坛上找到了这些方法,但没有一种方法可以工作:
echo "<script language='javascript'>showfeaturedimg('$post_id');</script>";
or
echo "<script>showfeaturedimg(\''$post_id'\');</script>";
showfeaturedimg()函数只是进行一次AJAX调用,从数据库中检索存储的图像,并在不重新加载页面的情况下将其显示在页面上。
此外还尝试将一个javascript函数调用添加到Dropzone的queuecomplete中,但是也不起作用:
<form action="upload-post.php?post_id=<?php echo $post_id;?>" class="dropzone" id="news-dropzone">
<div class="fallback">
<input name="file" type="file" multiple="multiple" />
</div>
</form>
<script>
Dropzone.options.dropzoneJsForm = {
init: function () {
this.on("success", function (file) {
alert("All files have uploaded ");
});
}
};
</script>
我做错了什么?
答案 0 :(得分:1)
首先,您需要将带有dropzone配置的脚本放在正文中,否则dropzone将自动检测您的表单,并使用默认选项创建它。
然后在成功事件中,您可以在$array2["1234"]
中访问服务器响应,或者如果您传递的第二个参数将成为响应本身,在此示例中,警报将显示您在php文件中打印的脚本。
file.xhr.response
如果您想执行响应而不是在警报中显示它,只需将其附加到html中,任何地方都应该没问题。
或者如果您愿意,可以使用jQuery插件来配置dropzone,但为了首先执行此操作,您需要将自动发现设置为false,这是一个示例:
<body>
......
<script>
Dropzone.options.newsDropzone= {
init: function () {
this.on("success", function (file, response) {
alert(response); // or alert(file.xhr.response);
})
}
};
</script>
</body>
注意:还要检查控制台,因为我认为您的初始代码应该会出错。