即使我看到响应,重定向也无法正常工作 - Laravel

时间:2018-04-14 15:21:56

标签: laravel redirect

我正在构建一个上传要修改的文件的项目。我想在上传完成后重定向到其他页面。即使我看到响应(我要去的页面html),重定向也无法正常工作。以下是上传完成后所发生情况的示例:enter image description here

以下是我在JavaScript中的上传代码:

mRecylerview.getViewTreeObserver().addOnScrollChangedListener(
    new ViewTreeObserver.OnScrollChangedListener() {
      @Override public void onScrollChanged() {
          int x = toolbar.getScrollX();
          int y = toolbar.getScrollY();
      }
    });

保存上传文件的函数(包含重定向响应),它存在于“UploadsController”控制器中:

$('#fileupload').fileupload({
    dataType: 'json',
     maxChunkSize: 10000000, 
    maxFileSize: 1000000 * 10000,
    done: function (e, data) {
      console.log("success");
      $('#spin').css('display','none');

    },
    progress:function (e, data) {
    var progress = parseInt(data.loaded / data.total * 100, 10);
      $('#prog').html(progress+"%");
      $('#prog').width(''+progress+'%');
      if(progress == 100){
          $("#prog").html('Completed');
          $('#spin').css('display','block');
      }
      console.log(progress);
    }

});

我的路线:

protected function saveFile(UploadedFile $file)
{
    $fileName = $file->getClientOriginalName();
    $finalPath = storage_path() . '/app/upload/';
    $file->move($finalPath, $fileName);//save uploaded file


    if (strcmp($file->getClientOriginalExtension(), "zip") == 0) { // if it is a zip file


            return redirect('download'); // redirect


    } else { // if it is not a zip file

        Storage::delete('/upload/' . $fileName);
        return response()->json([
            'status' => 'Zfalse'
        ]);
    }
}

1 个答案:

答案 0 :(得分:0)

您需要在前端使用Javascript重定向,因为它是一个ajax请求。您的ajax请求被正确地重定向,但没关系,因为返回的重定向内容只存储在回调内的变量中。

在您的控制器中:

return response()->json([
    'redirect' => url('to/where/you/want/to/go')
]);

在你的javascript:

done: function() {
    ...
    if (data.redirect) {
        // here you actually redirect to the new page
        window.location = data.redirect;
    }
    ...
}