我制作了一个照片上传系统,但现在遇到了一个问题:
这里是Ajax部分:
$(document).ready(function(){
$("#upload").click(function(e){
var formData = new FormData(this);
e.preventDefault();
e.stopPropagation();
$.ajax({
type: "POST",
url: "../system/avatar_system.php",
data:formData,
cache:false,
contentType: false,
processData: false,
success: function(data){
if(data == "upload_ok"){
location.reload();
}
},
error: function(){
}
});
});
});
这里的HTML:
<div class="form_box">
<form id="avatar_form" enctype="multipart/form-data" method="post" action="../system/avatar_system.php">
<input type="file" accept="image/*" id="file" name="file" class="select_file">
<label for="file">Bild auswählen</label>
<input id="upload" type="submit" value="Bild ändern" class="upload_file">
</form>
</div>
这里是avatar_system.php:
if(isset($_FILES['file'])){
$dirpath = "../users/". $username ."/avataruploads/";
if(!is_dir($dirpath)){
if(!mkdir($dirpath, 0777, true)){
$error = error_get_last();
echo "Failed creating Folder";
exit();
}
}
$file = $_FILES['file'];
$fileName = $_FILES['file']['name'];
$fileType = $_FILES['file']['type'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileError = $_FILES['file']['error'];
$fileExplode = explode('.', $fileName);
$fileExt = strtolower(end($fileExplode));
$allowed = array('jpg', 'jpeg', 'png', 'gif');
if(in_array($fileExt, $allowed)){
if($fileError === 0){
if($fileSize < 32768000){
$fileNewName = uniqid('', true) . '.' . $fileExt;
$filepath = $dirpath . $fileNewName;
move_uploaded_file($fileTmpName, $filepath);
$sql = "UPDATE users SET avatar = '$filepath' WHERE username = '$username'";
mysqli_query($conn, $sql);
mysqli_close($conn);
echo "upload_ok";
exit();
}else{
echo "This file is to big";
exit();
}
}else{
echo "There was an Error";
exit();
}
}else{
echo "Not allowed Extension";
exit();
}
}
我希望如果响应为“ upload_ok”,则重新加载网站,但是我得到一个新的空白页面,上面显示消息“ upload_ok”。
或者,也许它不应该重新加载页面,而应立即更改头像。
这怎么可能?
php参考方案
如您在错误文本中看到的
TypeError:FormData构造函数的参数1(“ form”)必须是HTMLFormElement的实例
您传递给FormData
而不是<form>
,而是<input[type=submit]>
。
因此,您应该传递<form>
。最简单的方法是
var formData = new FormData(this.form);
这是可能的,因为input
的form
始终具有输入所属的form
属性<form>
。
当下拉菜单中的文本等于值时,是否可以选择2个名称相同但值不同的单选按钮中的1个?https://paste.ee/p/2iCjA第97行我用if-else尝试过:if($('input[name="anrede"]').val() == 'Herr') { $("#Herr").…
在单次点击甚至点击链接时创建不同的功能 - php我有3个链接,它们是学生的名字。第一次单击链接或奇数时间时,会出现另一个div,其中包含该学生的详细信息。在第二次或偶数时间单击同一链接时,我需要隐藏学生div。使用jquery的data()事件对我来说效果很好。我的要求是,如果我单击第一个学生链接,则会显示第一个学生的详细信息。如果单击第二个学生链接,则会显示第二个学生的详细信息。如果再次单击第一个链接,…
php:是否有充分的理由引用所有数组键/索引? - php我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…
如何通过Ajax将数据发送到不同的元素? - phpscript.js $(document).on("click", ".send", function (event) { $.ajax({ url: "update.php", data: { id: id, }, type: "POST", success: function…
无法将jQuery发布到php上 - php我目前在在PHP页面上的MySQLi SELECT的jQuery上发布变量时遇到一些麻烦。jQuery代码:$("#carta1").click(function() { cartaId = document.getElementById("carta1").value; console.log(cartaId); a…