シングルクリックのアバターアップロードフォームを作成しようとしています。これはJavascript/php混合コードです:
<script type="text/javascript">
function uploadavatar(){
$('#frmuploadavatar').submit();
}
<?php
if(isset($_POST["btnuploadavatar"])){
$extension = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
$filename = pathinfo($_FILES["file"]["name"], PATHINFO_FILENAME);
$allowedExts = array('jpg','png');
if(!in_array($extension, $allowedExts)){
?>
$('#smlavatar').html("The uploaded file is not a jpg / png image!");
$('#smlavatar').attr("class","warning");
<?php
}else if($_FILES["file"]["size"]>2097152){
?>
$('#smlavatar').html("The uploaded file shouldn't exceed 2 megabytes!");
$('#smlavatar').attr("class","warning");
<?php
}else{
$uploadpath = "avatars/" . $filename . rand(1,1000000) . "." . $extension;
move_uploaded_file($_FILES["file"]["tmp_name"], $uploadpath);
?>
$('#imgavatar').attr("src","<?php echo $uploadpath; ?>");
$('#smlavatar').html("New avatar upload successfully!");
<?php
}
}
?>
</script>
そして、これがフォームのhtmlコードです。
<form action="register.php" method="POST" id="frmuploadavatar">
<input type="file" class="avatarupload" id="inpuploadavatar" name="avatar" onchange="uploadavatar()" />
<input type="button" id="btnuploadavatar" value="Upload New Avatar" style="width: 150px;" />
</form>
cssコードは含めませんでしたが、ファイルアップロードコントロールが非表示になり、ボタンが表示されるようにコード化されていますが、ユーザーは実際にはボタンではなくファイルアップロードコントロールをクリックしています(ファイルアップロードはz-indexで前面に表示されます) )。
関数uploadavatar()がアラートでテストすることにより、呼び出されていることを知っています。ただし、フォーム「frmuploadavatar」は、JQueryコードで指示されているように送信されません。ヘルプ?