在php中检索formdata .append方法

时间:2016-04-20 04:47:06

标签: javascript php jquery ajax

我上传text / plain文件并将其传递给php通过jquery ajax做一些事情。但是,jquery ajax返回 jquery-2.2.3.js:8998 Uncaught TypeError:非法调用 FormData not working in jquery return uncaught type error

检查jquery代码,如下面的enter image description here

<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;
}

?>

1 个答案:

答案 0 :(得分:0)

ADD:

  1. processData:false,//告诉jQuery不要处理数据
  2.   

    ProcessData标志设置为false,否则,jQuery将尝试将FormData转换为字符串

    1. contentType:false,//告诉jQuery不要设置contentType
    2.   

      ContentType选项为false,强制jQuery不为您添加Content-Type标头,否则,边界字符串将丢失。