【问题标题】:laravel7 working image upload but ajax says there's errorlaravel7 工作图像上传,但 ajax 说有错误
【发布时间】:2021-02-24 09:56:00
【问题描述】:

所以我正在通过 modal 和 ajax 上传图片。它正在工作,它保存在数据库中并作为图像保存在公用文件夹中,除了模式没有隐藏,因为控制台中说的有问题。

statusCode: ƒ ( map )
statusText: "OK"

AJAX:

$(document).ready(function(){   
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
//ADD PICTURE
    $('#btnUpload').click(function(){
        $('#uploadModal').modal('show');
    });

    $('#btnSave').click(function(){
        $.ajax({
            data: new FormData($('#uploadForm').get(0)),
            url: "{{ route('gallery.store') }}",
            type: "POST",
            dataType: 'json', 
            contentType: false,  // required for
            processData: false,  // jquery ajax file upload

            success: function(data){
                $successmessage = 'SUCCESSFULLY UPLOADED';
                $('#uploadModal').modal('hide');
                $('#successmessage').text($successmessage);
            },

            error: function(data){
                console.log('Error:', data);
            }
        });
    });
});

控制器:

public function store(Request $request)
    {
        $galleries=new Gallery;
        // Handle File Upload
        if($request->hasFile('upload')){
            // Get filename with the extension
            $filenameWithExt = $request->file('upload')->getClientOriginalName();
            // Get just filename
            $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
            // Get just ext
            $extension = $request->file('upload')->getClientOriginalExtension();
            // Filename to store
            $fileNameToStore= $filename.'.'.$extension;
            // Upload Image
            $path = $request->file('upload')->storeAs('public/upload', $fileNameToStore);
            
        } else {
            $fileNameToStore = 'noimage.jpg';
        }
        $galleries->description = $request->input('description');
        $galleries->upload = $fileNameToStore;
        $galleries->save();
    }

【问题讨论】:

  • 你没有在 store 函数中返回任何东西,这是有原因的吗,你可以这样做,if($galleries->save()){return true}

标签: ajax laravel file-upload modal-dialog laravel-7


【解决方案1】:

store 函数中,您必须返回响应状态码。如果成功,则返回200

return response()->json(['success' => 'success'], 200);

如果发生故障,您将返回与错误对应的代码。

例子:

return response()->json(['error' => 'invalid'], 401);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-07
    • 2017-05-14
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多