我上传text / plain文件并将其传递给php通过jquery ajax做一些事情。但是,jquery ajax返回 jquery-2.2.3.js:8998 Uncaught TypeError:非法调用
<input type="file" id="file">
<input type="submit" value="submit" id="btnUpload">
<script>
$(document).ready(function(){
$('#btnUpload').click(function(){
var ajaxData = new FormData();
ajaxData.append('action', 'scan_email');
ajaxData.append('file', $('#file')[0].files[0]);
$.ajax({
url: 'ajax.php',
data: ajaxData,
method: 'POST',
// beforeSend: function(){
// // alert('uploading..');
// },
success: function(data){
alert(data);
},
error: function(err){
alert('error');
}
});
});
});
</script>
ajax.php
<?php
echo $_POST['action'];
if (isset($_POST['action'])) {
switch ($_POST['action']) {
case 'scan_email':
scan_email();
break;
}
}
function scan_email(){
if ($_FILES["file"]["error"] > 0)
echo "Error: " . $_FILES["file"]["error"] . "<br />";
else if ($_FILES["file"]["type"] !== "text/plain")
echo "File must be a .txt";
else{
//do something
echo 'success';
// $file_handle = fopen($_FILES["file"]["name"], "rb");
}
exit;
}
?>
答案 0 :(得分:0)
ADD:
ProcessData标志设置为false,否则,jQuery将尝试将FormData转换为字符串
ContentType选项为false,强制jQuery不为您添加Content-Type标头,否则,边界字符串将丢失。