Php 更改文件输入时上载文件

Php 更改文件输入时上载文件,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我试图在文件输入发生变化时上传一个文件,但我无法让它工作,因为我不太擅长javascript 我在谷歌上搜索了一下,发现: 我使用它,并试图改变它,以我想如何使用它。但是我得到了错误 `Uncaught TypeError: Illegal invocation` 这是我的职责: function uploadFile(formData){ $.ajax({ url: 'inc/ajax/uploadFile.php', //Server script to proc

我试图在文件输入发生变化时上传一个文件,但我无法让它工作,因为我不太擅长javascript

我在谷歌上搜索了一下,发现:

我使用它,并试图改变它,以我想如何使用它。但是我得到了错误

`Uncaught TypeError: Illegal invocation`
这是我的职责:

function uploadFile(formData){
    $.ajax({
        url: 'inc/ajax/uploadFile.php',  //Server script to process data
        type: 'POST',
        data: {'formData':formData},
        //Ajax events
        success: function(html){
            alert(html);
        }
    });
}
我这样调用函数:

$("input:file").change(function(){
    var file = this.files[0];
    uploadFile(file);
})
和uploadFile.php

<?php
 $formData = $_GET['formData'];
 echo $formData;
?>


我只是测试并尝试用php返回文件,看看是否可以让它工作。但是我不知道如何用PHP调用它,或者用AJAX发送它。一旦我可以用PHP检索$u文件,我就知道如何用PHP上传它。

您需要将数据作为对象发送


除了另一个答案之外,将其添加到ajax中

contentType: false,
processData: false
比如:

您还应该考虑那些可能没有更新浏览器的人,只需输入一条小错误消息,如:

if(window.FormData === undefined){
    alert('sorry buddy, your browser\'s too old!');
    return;
}

$\u在客户端和服务器上获取$\u POST?
$\u获取['formData']
应该为空,因为您正在发送POST请求…注意,像这样上传文件在iSorry中不起作用,我将其改为POST。但是我应该像我一样给formData打电话吗?谢谢凯文B我会记住这一点的。非常感谢这很有意义。但我还是犯了同样的错误。。错误来自于“data:formData”行,谢谢,这修复了错误。但我必须如何在PHP中调用它$_POST['formData']不起作用。@Xegano,这取决于您对表单元素的命名。执行
var\u转储($\u POST)
var\u转储($\u文件)-这将显示正在发送到服务器的数据。谢谢!我不得不调用“$\u FILES['formData']”,它返回了数组。
var formData = new FormData();
formData.append('formData', file);
$.ajax({
    url: 'inc/ajax/uploadFile.php',  //Server script to process data
    type: 'POST',
    data: formData,
    contentType: false,
    processData: false,
    //Ajax events
    success: function(html){
        alert(html);
    }
});
if(window.FormData === undefined){
    alert('sorry buddy, your browser\'s too old!');
    return;
}