XMLHttpRequest有效,但回调时没有响应/状态

时间:2014-05-14 14:26:38

标签: javascript xmlhttprequest response

我有一个XMLHttpRequest我正在发送图像以保存在我的Amazon s3存储桶上。它工作正常,文件进入我的桶,但我没有回复说它正在进行中或已成功上传。我的代码如下:

html页面中的Javascript代码:

var ajax = new XMLHttpRequest();

ajax.open("POST",'http://www.xxxx.php',false);
ajax.setRequestHeader('Content-Type', 'application/upload');
ajax.send(theImage);

ajax.onreadystatechange=function(){
    if (ajax.readyState==4 && ajax.status==200) {                                           
        console.log('success');  
    }
    else {                                           
        console.log('ongoing...');
    }
}

xxxx.php中的PHP代码:

<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){
    $imageData = $GLOBALS['HTTP_RAW_POST_DATA'];
    $filteredData = substr($imageData, strpos($imageData, ",")+1);
    $imgFileString = base64_decode($filteredData);
    $s3Filename = time().'.png';

    if($s3->putObjectString($imgFileString, $bucket , $s3Filename, S3::ACL_PUBLIC_READ) ){
        echo "SUCCESS";
    }
    else{
        echo "ERROR";
    }
}
else {
    echo "EMPTY";
}
?>

如何回复上传成功上传内容或发生错误?

1 个答案:

答案 0 :(得分:0)

ajax.open("POST",'http://www.xxxx.php',false);
                                       ^^^^^^

您正在发出同步请求,因此在分配事件处理程序之前,正在发出请求并收到响应。不要那样做。删除false(或将其更改为true)。