成功上传文件后显示Javascript alert()

时间:2013-09-05 21:25:49

标签: php javascript

我有一个小型上传系统来上传个人资料图片。 我想显示一个带有1个按钮的警告框(已成功上传)。 这是我的php上传功能:

function change_profile_image($user_id, $file_temp, $file_extn){
    $file_path = substr(md5(time()), 0, 10) . '.' . $file_extn;
    move_uploaded_file($file_temp, 'images/profile/'.$file_path);
    Thumbnail('images/profile/', $file_path, 'images/thumbs/');
    mysql_query("UPDATE `users` SET `profile` = 'images/profile/" . mysql_real_escape_string($file_path) . "' WHERE `user_id` = " . (int)$user_id);
}

以下是我如何调用该函数:

if (in_array($file_extn, $allowed) === true) {
                        change_profile_image($session_user_id, $file_temp, $file_extn);
                        header('Location: ' . $current_file);
                        exit();
                    }

1 个答案:

答案 0 :(得分:1)

这可能是jQuery的工作。实际上,它可能

但是一个可能接近的第二个(也更简单)选项可能是传递GET参数作为确认:

header("Location: {$current_file}?loaded=ok");

然后在“当前文件”中检查它,可能在正文的末尾:

if (isset($_GET['loaded'])) {
    if ('ok' == $_GET['loaded'])
        $msg = "Loaded OK!";
    else
        $msg = "Oh noes! Error {$_GET['loaded']} while updating picture";
    // Remember, keep $msg without 'quote' "signs", or \"escape\" them properly
    print <<<DISPLAY_ALERT
<script>
    alert('$msg');
</script>
DISPLAY_ALERT;
}

注意:上面的代码使用PHP“here documents”。它们的工作方式如下:<<<SOMESEQUENCE引入字符串,必须> SOMESEQUENCE之后的任何内容。并且仅由仅包含SOMESEQUENCE;单行终止,并且在任何地方都没有额外的空格。即使是单个空间的存在也会导致有时难以诊断的故障。此外,YOUR_SEQUENCE在PHP代码中必须是唯一的。你不能有两个具有相同序列的heredocs(在紧要关头,给它们编号:SEQUENCE1SEQUENCE2)。

在heredoc中,你可以使用不带引号的字符串和回车符,所以当我无法使用正确的模板时,这是我最喜欢的包含HTML片段的方法。