Axios发布后,Laravel控制器无法正确重定向

问题描述 投票:0回答:1

im在存储一些使用axios(ReactJS)传递的数据后尝试重定向。控制器工作正常,它将数据存储在数据库中,但不会重定向到我想要的目标。

我运行良好的组件代码:

    async onSubmitButton(e) {
    e.preventDefault();
    const formData = new FormData();
    formData.append("objet", this.state.objet);
    formData.append("id_p", this.state.id_p);
    const response = await axios.post("/CreateCDM", formData, {
    headers: {
    "Content-Type": "multipart/form-data"
    }
    })
    .catch(err => { 
        console.log(err);
        this.setState({errorMessage: err.message});    
    })
}

这是我的控制器:

public function store(Request $request)
{
    $dm = new DossierMedical;
    $id = Auth::user()->id;

    $dm->objet = $request->objet;
    $dm->analyseRequis = 0;
    $dm->medcine = $id;
    $dm->patient = $request->id_p;

    $dm->save(); //Working , i cant see that in the DB

    $specialite = DB::table('specialites')
        ->where('nom', 'not like', 'Radiologie')
        ->where('nom', 'not like', 'Laboratoir d\'Analyse')
        ->SELECT('*')
        ->GET();

    return view('dossierMedicale.patient.dm' ,
    ['objet' => $request->objet ,
    'id' => $dm->id ,
    'Specialite' => $specialite
    ]);

}

问题是我没有重定向到我想要的视图,并且我在控制台中看不到任何服务器错误。

PS:如果我使用blade.php发布数据(不带Reactjs),则会重定向我

reactjs laravel controller axios
1个回答
0
投票

重定向应该在ReactJS中完成,而不是在Laravel的控制器中完成。

ReactJS中的示例:

    onSubmitButton(e) {
      e.preventDefault();
      const formData = new FormData();
      formData.append("objet", this.state.objet);
      formData.append("id_p", this.state.id_p);

      axios.post("/CreateCDM", formData, {
        headers: {
          "Content-Type": "multipart/form-data"
        }
      })
      .then(response => {
         // obtain the data return from controller 
         const { objet, id, Specialite } = response.data;

         //perform your redirection to other routes.
         window.location.href = "/other-routes/";
      })
      .catch(err => { 
        console.log(err);
        this.setState({errorMessage: err.message});    
      })
    }

控制器样本:

public function store(Request $request)
{
    $dm = new DossierMedical;
    $id = Auth::user()->id;

    $dm->objet = $request->objet;
    $dm->analyseRequis = 0;
    $dm->medcine = $id;
    $dm->patient = $request->id_p;

    $dm->save(); //Working , i cant see that in the DB

    $specialite = DB::table('specialites')
        ->where('nom', 'not like', 'Radiologie')
        ->where('nom', 'not like', 'Laboratoir d\'Analyse')
        ->SELECT('*')
        ->GET();

    return response()->json([
      'objet' => $request->objet ,
      'id' => $dm->id ,
      'Specialite' => $specialite
    ], 200); 
}
© www.soinside.com 2019 - 2024. All rights reserved.