【问题标题】:Solved : Laravel Controller not redirecting properly after an axios post已解决:在 axios 发布后 Laravel 控制器无法正确重定向
【发布时间】:2020-09-08 18:20:37
【问题描述】:

我在存储一些使用 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】:

    重定向应该在 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); 
    }
    

    【讨论】:

    • 我现在明白了,axios 负责重定向。感谢战利品人
    猜你喜欢
    • 1970-01-01
    • 2020-08-24
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2019-08-31
    • 2017-08-21
    • 2014-11-05
    相关资源
    最近更新 更多