私のコードは次のとおりです。画像ファイルをアップロードして画像のdivに表示したいと思います。 ファイルを選択するときにjsで書かれたajaxコードをトリガーしたいです。ファイルをサーバーにアップロードし、他のイベントなしで表示する必要があります。 しかし、このコードは機能しません。画像の代わりに未定義のインデックス画像を表示しています。javascriptでAJAXを使用して画像をアップロードするには?
HTMLのFORM
<!doctype html>
<html>
<body>
<div id="wb_Image2>
<img src="" id="Image2" alt="">
</div>
<input type="file" id="FileUpload1" name="image" onchange="upload()" >
<div id="div"> </div>
</body>
</html>
JSファイル -
function upload()
{
var xhttp = new XMLHttpRequest(); //creating a xmlhttp request;
xhttp.open("POST","upload.php", true);
xhttp.send();
xhttp.onreadystatechange = function()
{
if (xhttp.readyState == 4 && xhttp.status == 200)
{
alert(xhttp.responseText);
document.getElementById("div").innerHTML= xhttp.responseText;
document.getElementById("Image2").src = xhttp.responseText;
}
};
}
PHPファイル、upload.php javascript
で
<?php
$errors=array();
$name=$_FILES['image']['name']; //storing name of d file
$ext=explode('.',$name); //ext[0]=nameOfFile and ext[1]= extension
$size=$_FILES['image']['size'];//storing size
$tmpName=$_FILES['image']['tmp_name'];//storing temp name
$validExt=array("jpg","jpeg","png","gif");//valid extensions
if(($size/(1024*1024))>2) //checking file size is less than 2mb or not
{
$errors[]="file size exceeds 2 mb";
echo "file size exceeds 2 mb";
}
if(empty($errors))
{
echo $ext[0]." ".$ext[1];
$newFilename = $ext[0].substr(session_id(),0,5).rand(0,1000).".".$ext[1];
move_uploaded_file($tmpName,"upload/".$newFilename);
}
else {
echo 'flag 1';
}
?>
http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously – adeneo