使用PHP在Dropzone JS文件上传期间在PHP中调用Javascript函数

时间:2015-11-29 12:51:01

标签: javascript php ajax dropzone.js

我试图在PHP文件上传中调用Javascript函数。 PHP方法取自这里:

Dropzone JS & 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>

我做错了什么?

1 个答案:

答案 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>

注意:还要检查控制台,因为我认为您的初始代码应该会出错。