0

I am trying to upload image using ajax in laravel 5.2.but still i am getting error 500 Internal Server Error in route. when i am trying to upload image using ajax request the browser shown correct route path but still i am not getting reason why it still showing error to me.

HTML

<!-- CHANGE AVATAR TAB -->
                        <div class="tab-pane" id="tab_1_2">

                            <div class="uploadimagediv"></div> 
                                {{ Form::open(array('url' => 'admin/avatar','method'=>'post','files'=>'true','id'=>'updateprofileimage'))  }}

                                <div class="form-group">
                                    <div class="fileinput fileinput-new" data-provides="fileinput">
                                        <div class="fileinput-new thumbnail" style="width: 200px; height: 150px;">
                                            <img src="http://www.placehold.it/200x150/EFEFEF/AAAAAA&amp;text=no+image" alt=""/>
                                        </div>
                                        <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 150px;">
                                        </div>
                                        <div>
                                            <span class="btn default btn-file">
                                            <span class="fileinput-new">
                                            Select image </span>
                                            <span class="fileinput-exists">
                                            Change </span>
                                            <p class="text-danger" id="error_image"></p>
                                            <input type="file" id="picture" name="picture"/>
                                            {{--{{ Form::file('picture') }}--}}
                                            </span>
                                            <span class="error alert-danger">{{ $errors->first('picture') }}</span>
                                            <a href="javascript:;" class="btn default fileinput-exists" data-dismiss="fileinput">
                                            Remove </a>
                                        </div>
                                    </div>
                                    <div class="clearfix margin-top-10">

                                    </div>
                                </div>
                                <div class="margin-top-10">
                                    {{Form::hidden('id', 2, ["id"=>"id"])}}
                                    {{ Form::button('Upload',['id'=> 'updatepicture','class'=>'btn green-haze']) }}

                                    {{--{{ Form::submit('Submit',['class' => 'btn green-haze','name'=>'changeImage']) }}--}}
                                    <a href="javascript:;" class="btn default">
                                    Cancel </a>
                                </div>
                            {{ Form::close() }}
                        </div>
                        <!-- END CHANGE AVATAR TAB -->

Route

Route::group(['prefix' => 'admin'], function ()
{
    Route::controller('/','DashboardController');
});

Ajax

$(document).on('click', '#updatepicture', function($e)
{
    $e.preventDefault();
    // send an ajax request
    $("#error_image").empty();
    $.ajax(
    {

        url: 'avatar',
        processData: false,
        contentType: false,
        type: "post",//use for update
        data: new FormData($("#updateprofileimage")[0]),
        success: function(data)
        {
            if(data.status)
            {           
                $("#uploadimagediv").html('<div class="alert alert-success"><button type="button" class="close">×</button>'+data.message+'</div>');
                window.setTimeout(function()
                {
                    $(".alert").fadeTo(500, 0).slideUp(500, function()
                    {
                        $(this).remove(); 
                    });
                }, 5000);
                $('.alert .close').on("click", function(e)
                {
                    $(this).parent().fadeTo(500, 0).slideUp(500);
                });
                //console.log(data);
                //$("#updateprofileimage")[0].reset();
                //window.location.href = "http://localhost/laravel/admin/profile";
            }
            else
            {
                errors = data.errors;

                for(error in errors)
                {
                    $("#error_"+error.title).html(error.message);
                }
            }
        },
        error: function(xhr)
        {
            if(xhr.status == 422)
            {
                errors = xhr.responseJSON;
                for(error in errors)
                {
                    $("#error_"+error).html(errors[error][0]);
                }
            }
        }
    });
});

Error is :"NetworkError: 500 Internal Server Error - http://localhost/laravel/admin/avatar"

please suggest me where i am getting wrong.

Controller is

public function postAvatar(ImageUploadRequest $request)
{
  ---
}

3 Answers 3

1
Add the below line inside <head>
<meta name="csrf-token" content="{{ csrf_token() }}">

And add the below lines before your ajax call in javascript function
$.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
});

And don't forget to give permission to your storage folder
sudo chmod -R 777 storage
Sign up to request clarification or add additional context in comments.

2 Comments

i am still getting error "NetworkError: 500 Internal Server Error - localhost/laravel/admin/avatar"
looks like you have not correctly put your route in ajax url , near $.ajax( { url: 'avatar', it must be url: '{{route('name')}}'
1

In your ajax setup you have to provide x-csrf-token with the request. For your ajax request , also there is a problem with your url:

 $(document).on('click', '#updatepicture', function($e)
    {
        $e.preventDefault();
        // send an ajax request
        $("#error_image").empty();
        $.ajax(
        {

            url: "{{url('avatar')}}",
            processData: false,
            contentType: false,
            type: "post",//use for update
            data: new FormData($("#updateprofileimage")[0]),
            headers: {
            'X-CSRF-TOKEN': "{{ csrf_token() }}"
            },
            success: function(data)
            {
                if(data.status)
                {           
                    $("#uploadimagediv").html('<div class="alert alert-success"><button type="button" class="close">×</button>'+data.message+'</div>');
                    window.setTimeout(function()
                    {
                        $(".alert").fadeTo(500, 0).slideUp(500, function()
                        {
                            $(this).remove(); 
                        });
                    }, 5000);
                    $('.alert .close').on("click", function(e)
                    {
                        $(this).parent().fadeTo(500, 0).slideUp(500);
                    });
                    //console.log(data);
                    //$("#updateprofileimage")[0].reset();
                    //window.location.href = "http://localhost/laravel/admin/profile";
                }
                else
                {
                    errors = data.errors;

                    for(error in errors)
                    {
                        $("#error_"+error.title).html(error.message);
                    }
                }
            },
            error: function(xhr)
            {
                if(xhr.status == 422)
                {
                    errors = xhr.responseJSON;
                    for(error in errors)
                    {
                        $("#error_"+error).html(errors[error][0]);
                    }
                }
            }
        });
    });

1 Comment

i am still getting error "NetworkError: 500 Internal Server Error - localhost/laravel/admin/avatar"
0

Anyone with 500 server error, remember to turn on phpinfo in php.ini (of xamp), and on cpanel hosting, go to php select version -> extensitons -> check phpinfo is ok

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.