user10013639
user10013639

Reputation:

File inserted empty when pass through ajax

Here is my ajax submit function.When i submit this function,worklogdetailsidschedule,shift_schedule are inserted into database correctly.But the filename_schedule is empty in database(Which is a file).How to solve it?

 $('#scheduleform').submit(function(e){
            e.preventDefault();
            var workLogDetailsIdschedule          = $('#workLogDetailsIdschedule').val();

            var shift_schedule                      = $("#shift_schedule option:selected").val();
            var filename_schedule                 = $('#filename_schedule').val();


        $.ajax({
            type: "POST",
            url: "<?php echo base_url()?>shifts/addscheduleerror/",
            data: {workLogDetailsIdschedule:workLogDetailsIdschedule,shift_schedule:shift_schedule,filename_schedule:filename_schedule,},
            success: function (data) {

              alert("Added Successfully");
                    location.href = "<?php echo base_url()?>shifts/punch";
            },
            error: function () {
                alert("Server Error! Please try again later.");
            }
        });
    });

Upvotes: 1

Views: 32

Answers (3)

noufalcep
noufalcep

Reputation: 3536

Try using form_data and use files property instead of value

$('#scheduleform').submit(function(e){
    e.preventDefault();

    var workLogDetailsIdschedule          = $('#workLogDetailsIdschedule').val();
    var shift_schedule                    = $("#shift_schedule option:selected").val();
    var filename_schedule                 = $('#filename_schedule')[0].files[0];

    var form_data = new FormData();
    form_data.append('workLogDetailsIdschedule', workLogDetailsIdschedule);
    form_data.append('shift_schedule', shift_schedule);
    form_data.append('filename_schedule', filename_schedule);

    $.ajax({
        type: "POST",
        url: "<?php echo base_url()?>shifts/addscheduleerror/",
        data: form_data,
        success: function (data) {

          alert("Added Successfully");
                location.href = "<?php echo base_url()?>shifts/punch";
        },
        error: function () {
            alert("Server Error! Please try again later.");
        }
    });
});

Upvotes: 2

Sagor
Sagor

Reputation: 81

I spend so many hours for Solve this issue. i got solution like this.

var $data = new FormData();
$data.append('file', $("#photofile").get(0).files[0]);
$data.append('resume', $("#resume").get(0).files[0]);
$data.append('email', $("#email").val());

Everything assign in This data and send it Like... data: $data, in php file catch these key which assigned via $data.append()

Upvotes: 1

vicvinc
vicvinc

Reputation: 11

if you upload a file to your server, then it can't be in the JSON format(unless converting your file to a string, such as the base64 image).

using form data instead.

Upvotes: 0

Related Questions