Txuver Jhi Wei
Txuver Jhi Wei

Reputation: 328

retrieve formdata .append method in php

I upload text/plain file and pass it to php do something via jquery ajax. However, jquery ajax return jquery-2.2.3.js:8998 Uncaught TypeError: Illegal invocation FormData not working in jquery return uncaught type error

Check jquery code which look like below 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;
}

?>

Upvotes: 1

Views: 3438

Answers (1)

guradio
guradio

Reputation: 15555

ADD:

  1. processData: false, // tell jQuery not to process the data

ProcessData flag set to false, otherwise, jQuery will try to convert your FormData into a string

  1. contentType: false, // tell jQuery not to set contentType

ContentType option to false, forcing jQuery not to add a Content-Type header for you, otherwise, the boundary string will be missing from it.

Upvotes: 1

Related Questions