gpt4 book ai didi

javascript - 无法使用ajax将文件发送到php文件

转载 作者:搜寻专家 更新时间:2023-10-31 20:38:47 27 4
gpt4 key购买 nike

我在接收文件数据时遇到问题。

这是我的 HTML 表单:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Upload</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<script type="text/javascript" src="General.js"></script>
</head>

<body>
<form method="post" enctype="multipart/form-data" id="Form" action="upload.php">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile">
</td>
<td width="80"><input name="submit" type="submit" class="box" id="submit" value=" Upload "></td>
</tr>
</table>
</form>

如您所见,它将我们发送到文件 General.js

$(document).ready(function (e){
$("#Form").on('submit',(function(e){
e.preventDefault();
var formData = new FormData(document.getElementById('userfile'));
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "uploader.php",
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(callback){
alert(callback);
}
});

return false;
})
);
});

以及需要接收此信息的 php 页面:

$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

一切正常,但问题是当我将数据发送到 php 文件时,它没有收到应有的数据。也许我需要使用一些额外的东西?因为文件的名称和大小以及所有内容都是空的。

编辑:

$(document).ready(function(){
$("#submit").click(function(){
var formData = new FormData($('form')[0]);
// AJAX Code To Submit Form.
$.ajax({
type: "POST",
url: "uploader.php",
xhr: function() { // Custom XMLHttpRequest
var myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){ // Check if upload property exists
myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload
}
return myXhr;
},
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(callback){
alert(callback);
}
});

return false;
});
});

function progressHandlingFunction(e){
if(e.lengthComputable){
$('progress').attr({value:e.loaded,max:e.total});
}
}

也试过这段代码,但它仍然没有向页面发送正确的信息。我在 uploader.php 页面上收到一个错误,指出文件名是空的,这意味着我可能没有收到它或者它根本没有发送。

最佳答案

尝试使用这个...

    $(document).ready(function (e) {
$("#Form").on('submit',(function(e) {
e.preventDefault();
$.ajax({
url: "uploader.php", // Url to which the request is send
type: "POST", // Type of request to be send, called as method
data: new FormData(this), // Data sent to server, a set of key/value pairs (i.e. form fields and values)
contentType: false, // The content type used when sending data to the server.
cache: false, // To unable request pages to be cached
processData:false, // To send DOMDocument or non processed data file it is set to false
success: function(data) // A function to be called if request succeeds
{
console.log(data);
}
});
}));
});

关于javascript - 无法使用ajax将文件发送到php文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com