tinkerbell's avatar

500 Internal Server Error

in the console it will print

requisition/15/files:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error

what I am trying to do is uploading a file + change status through a modal form without refreshing and closing the modal

I think I didnot passed my data correctly to the ajax request can anyone solve it for me?

controller

 public function storeFile(Request $request , $id) {

        if ($request->ajax()) {

        $validator = Validator::make($request->all(), [
       // $request->validate([
            'acc_status'            => 'required',
           'acc_document'          => 'required|mimes:doc,docx,pdf,txt,zip|max:2000',
        ]);
       if ($validator->fails())
        {
                        return response()->json(['errors'=>$validator->errors()]);
        }
            $requisition = Requisition::find($id);
            $requisition->acc_status =  $request->get('acc_status');

             if($request->hasFile('acc_document'))
            {

            $requisitionFile = public_path("/{$requisition->acc_document}");
             if ($requisition->acc_document!=null)
            {
                    unlink($requisitionFile);
            }
            $FileName = uniqid() .$request->file('acc_document')->getClientOriginalName();
            $path = $request->file('acc_document')->storeAs('uploads', $FileName , 'public');
            $requisition->acc_document = '/storage/' . $path;
            }
            $requisition->save();

            return response()->json('success', 'Your file has been uploaded successfully.');
        
    }
     }

ajax

<script>
$(document).on('submit', '#FileUploadForm', function (event) {
        event.preventDefault();
        let href = $(this).attr('action');
        var formData = new FormData($('#FileUploadForm')[0]);
      //  let data = $(this).serialize();
        $.ajax({
            url: href,
            method : 'POST',
            data: formData,
            processData: false,
             contentType: false,
            cache: false,
        enctype: 'multipart/form-data',

            dataType: "json",
           headers: {
            'X-CSRF-Token': $('meta[name="csrf_token"]').attr('content')
        },
            beforeSend: function () {
                $('#response').html('<span class="text-primary">Loading response...</span>');
            },
            success: function (response) {
               let data = JSON.stringify(response);
                               alert(data);
            },
            error: function (jqXHR, testStatus, error) {
                alert("Page " + href + " cannot open. Error:" + error);
            },
            timeout: 8000
        });
    });

</script>

form

<form action="{{ route('storefile' , $requisition->id) }}" method="POST"
enctype="multipart/form-data" id="FileUploadForm">
@csrf
<div class="form-group row">
<div class="col-sm-12">

<label for="title"> Account Status: </label>
<select class="form-control" name="acc_status">
    <option value="0" {{ $requisition->acc_status == 0 ? 'selected' : '' }}> Inactive
    </option>
    <option value="1" {{ $requisition->acc_status == 1     ? 'selected' : '' }}> Active
    </option>
    <label for="" id="accstatus"></label>
</select>
</div>
<div class="col-sm-12 pt-4">
<label for="title"> Account document File: </label>
<div>
    @if (!empty($requisition->acc_document))
    <label class="badge-success">
        {{ $requisition->acc_document }}
    </label>
    @else
    <label class="badge-danger">
        Nothing uploaded </label>
    @endif
</div>
<input type="file" name="acc_document" class="form-control" id="acc_document" />
                                    <label for="" id="accdocument"></label>
</div>
</div>
<div class="card-footer">
<div class="row">
<div class="col-md-6 text-left">
    <div id="response">
    <input type="submit" id="submitUpload" value="Upload document"
        class="btn btn-primary">
</div>
</div>
</div>
</div>
</form>

route

Route::post('requisition/{id}/files', [RequisitionController::class, 'storeFile'])->name('storefile');
0 likes
3 replies
Tray2's avatar

Show us the full 500 error, You have something wrong in your php code.

1 like
tinkerbell's avatar

@tray2 console errors

Failed to load resource: the server responded with a status of 500 (Internal Server Error)
app.js:16468 POST http://127.0.0.1:8000/requisition/15/files 500 (Internal Server Error)
send @ app.js:16468
ajax @ app.js:16051
(anonymous) @ requisition:543
dispatch @ app.js:11798
elemData.handle @ app.js:11602

Network preview errors

exception: "TypeError"
file: "C:\xampp\laravel\posinvoice\vendor\symfony\http-foundation\JsonResponse.php"
line: 42
message: "Argument 2 passed to Symfony\Component\HttpFoundation\JsonResponse::__construct() must be of the type int, string given, called in C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Http\JsonResponse.php on line 31"
trace: [,…]
0: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Http\JsonResponse.php",…}
1: {,…}
2: {file: "C:\xampp\laravel\posinvoice\app\Http\Controllers\RequisitionController.php", line: 125,…}
3: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Routing\Controller.php",…}
4: {,…}
5: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Routing\Route.php",…}
6: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Routing\Route.php",…}
7: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Routing\Router.php",…}
8: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
9: {,…}
10: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
11: {,…}
12: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
13: {,…}
14: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
15: {,…}
16: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
17: {,…}
18: {,…}
19: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
20: {,…}
21: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
22: {,…}
23: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
24: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
25: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Routing\Router.php",…}
26: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Routing\Router.php",…}
27: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Routing\Router.php",…}
28: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Routing\Router.php",…}
29: {,…}
30: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
31: {,…}
32: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
33: {,…}
34: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
35: {,…}
36: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
37: {,…}
38: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
39: {file: "C:\xampp\laravel\posinvoice\vendor\fruitcake\laravel-cors\src\HandleCors.php", line: 37,…}
40: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
41: {file: "C:\xampp\laravel\posinvoice\vendor\fideloper\proxy\src\TrustProxies.php", line: 57,…}
42: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
43: {file: "C:\xampp\laravel\posinvoice\vendor\laravel\framework\src\Illuminate\Pipeline\Pipeline.php",…}
44: {,…}
45: {,…}
46: {file: "C:\xampp\laravel\posinvoice\public\index.php", line: 52, function: "handle",…}
47: {file: "C:\xampp\laravel\posinvoice\server.php", line: 21, function: "require_once"}



tinkerbell's avatar
tinkerbell
OP
Best Answer
Level 1

The problem was with my success JSON message in my controller I were able to fix it by changing the error message in to an array.

changing this

return response()->json('success', 'Your file has been uploaded successfully.');

to

            return response()->json(['success' => 'Your file has been uploaded successfully!' ]);

Please or to participate in this conversation.