PHP&;JQUERY+如何让JQUERY知道文件上传何时完成


PHP & JQUERY + how to let Jquery know when a file upload has completed

我有一个脚本,可以在不使用jquery.form.js 刷新页面的情况下上传图像

下面是开始处理文件的PHP文件,完成后PHP创建一个标记来显示图像。

我现在需要一个方法让JQUERY知道PHP文件处理已经完成。有什么好办法把这两者联系起来吗?

我想我可以在页面上写一些隐藏的东西,让JQUERY查找,但我不确定这是否是一个B级解决方案。

有什么想法吗?如果需要的话,我可以解释得更好。thx

<?php
    $type = $_POST['mimetype']; 
  $xhr = $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'; 

    foreach($_FILES as $file) { 
            $filename = $file['name']; 
            $filesize = $file['size'];
            $filetmp = $file['tmp_name'];
    } 

    // Script Variables
    $errors=0;
    $notAllowedFileType=0;
    $exceededMaxFileSize=0;
    $maxsize='10485760';                                    // 10MB Maximum Upload
    $folder = 'images/';
    $configWidth = 500;
    $newFileName = 'success_story'.time().'.jpg';
    // Process if No Errors
    if(!$errors) {
        // Variables
        $uploadedFile = $filetmp;
        $filename = basename( $filename);
        $extension = strtolower(getExtension($filename));
        // Convert the Specific Type of File into an Image
        if($extension=='jpg' || $extension=='jpeg' ) {
            $uploadedfile = $fullfilepath;
            $src = imagecreatefromjpeg($uploadedFile);
        }elseif($extension=='png') {
            $uploadedfile = $fullfilepath;
            $src = imagecreatefrompng($uploadedFile);
        }else{
            $uploadedfile = $fullfilepath;
            $src = imagecreatefromgif($uploadedFile);
        }
        // Configure Width & Height
        list($origWidth, $origHeight) = getimagesize($uploadedFile);
        $configHeight = ($origHeight/$origWidth)* $configWidth;
        // Create Empty File
        $tmp = imagecreatetruecolor($configWidth, $configHeight);
        imagecopyresampled($tmp, $src, 0,0,0,0,$configWidth,$configHeight,$origWidth,$origHeight);
        imagejpeg($tmp, $_SERVER['DOCUMENT_ROOT'].$folder.$newFileName,90);
        echo "<img src=".$folder.$newFileName." id='"cropMeNowImage'">";
    }
    // Get Extension from Uploaded File
    function getExtension($str) {
        $i = strrpos($str,".");
        if (!$i) {return "";}
        $l = strlen($str) - $i;
        $ext = substr($str,$i+1,$l);
        return $ext;
    }
?>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script>
(function() {
    $(document).on('change','img#cropMeNowImage', function() {
        alert('Ready to Crop');
    });
})();       
</script>

您需要使用回调函数。类似于:

$(document).on('change','img#cropMeNowImage', function() {
    $.post(url, {
        vars_to_server : vars
    }, function(process_done){
        if (process_done)
            alert("ready");
    })
});

php必须echo变量process_done 中jquery可识别的内容

相反:

echo "<img src=".$folder.$newFileName." id='"cropMeNowImage'">";

你可以echo 1成功

这就是想法。这完全有可能。专门用于通过AJAX上传文件的常见任务。。。


我向您推荐:使用jQuery 进行Ajax调用的5种方法

看看http://github.com/valums/file-uploader我总是用它来上传文件。