Return 函数对 Ajax 响应的可变结果

Return a variable result of a function to an Ajax response

这是我的 Ajax 电话:

$("#cover-input").change(function(){
var file_data = $("#cover-input").prop("files")[0];
var form_data = new FormData();
form_data.append("cover_file", file_data);
//kaherdin
$.ajax({
    url:  'update-cover',
    type: 'POST',
    dataType: 'script',
    data: form_data,
    contentType: false,
    processData: false,
    async: false,
    success: function(resp){
        console.log(resp);
    },
    error: function(err){
        console.log('Likes error', err);
    }
});
    readURL_cover(this);
});

我有一个基本 trim 并在更改时上传文件的功能。

 public  function  updateCover(Request $request) {
    $user = Sentinel::check();
    $destinationPath = public_path('uploads/users');

    if ($fileCover = $request->file('cover_file')) {
        $input_cover = time().'.'.$fileCover->getClientOriginalExtension();
        $img = Image::make($fileCover->getRealPath());
        $img->fit(1920, 555, function ($constraint) {
            $constraint->aspectRatio();
        })->save($destinationPath.'/'.$input_cover);
       // $user->cover = $input_cover;

        $response = $input_cover;          
        return $response;
    }

但这让我出错。我只想让 "input_cover" 回到我的 ajax 通话中,这样我就可以显示更新后的图片。 如果我改变: $response = $input_cover 到 $response = [$input_cover];它的工作很复杂,但输入就像:["my_pic.jpg"] 所以它不是很好。

您应该 return 一个像这样的 JsonResponse:

return response()->json(['input_cover' => $input_cover]);

检查此以了解 json 中的响应及其工作方式 https://laravel.com/docs/5.4/responses#json-responses