【问题标题】:how to get data from ajax request in laravel如何从 laravel 中的 ajax 请求中获取数据
【发布时间】:2017-09-14 10:17:56
【问题描述】:

我正在做 ajax 请求并传递这些数据

    $.ajax({
  url: "{{URL::to('match')}}/"+ id,
  type: 'PUT',
  // dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
  data: {
    match_id : id,
    start_time : newTime,
    competitionId: {{$cid}},
    _token:     '{{ csrf_token() }}'
  }
})

并在 laravel 中试图将这些数据作为

dd($request->start_time);

但它不工作我得到空

在 chrome 开发者工具中 正确发送带有ajax请求的数据这是一个简单的

match_id:1
start_time:03:00
competitionId:1
_token:9p8plPay7HLvJvMrTgxayEH74Ow6c2D1cli1yU01

在我将此站点移至新服务器之前,所有这些都运行良好

我错过了任何文件吗?

【问题讨论】:

  • 尝试通过 $request->input 获取参数 - 根据laravel.com/docs/5.4/requests#retrieving-input,无论请求方法如何都应该有效。
  • 检查浏览器 (Chrome) 中的网络标签。
  • 我用过这个方法。我也试过 dd($request->all());但是得到这个[]
  • @theAlpha 我在上面简单地从网络选项卡中给出了
  • @MuhammadAwais 你能完整地向我们展示你的控制器方法和相关路线吗?

标签: jquery ajax laravel laravel-5.4


【解决方案1】:

输入 php artisan route:list

检查你的路线,例如你的

方法 = 放

Uri = 匹配/{匹配}

名称 = match.update

Action = App\Http\Controllers\MatchController@更新 //你的方法

路线:

Route::resource('/match', 'MatchController');

这是你的 ajax 调用:

$.ajax({
    url: 'match/'+ id, //this is your uri
    type: 'PUT', //this is your method
    data: { match_id:id, start_time:newTime },
    dataType: 'json',
    success: function(response){

    }
});

你的控制器:

public function update(Request $request, $match_id)
{
   if(request()->ajax()){
      $match = Match::find($match_id);
      $validator = Validator::make($request->all(), [
         'start_time'=>'required',
      ]);

      if($validator->passes()) 
      {
        $match->start_time = $request->start_time;
        $match->save();

        return response()->json(['msg'=>'Updated Successfully', 'success'=>true]);
      }
      return response()->json(['msg'=>$validator->errors()->all()]);
    }
}

【讨论】:

  • 我正在使用资源控制器 Route::resource('/match', "MatchController");
  • 同样我正在使用 Route::resource('/trademark', 'TrademarksController');
  • 如果你使用资源路由,你应该在你的控制器你的方法之后有 App\Http\Controllers\MatchController@method
  • 那么我做错了什么?我的路线是正确的,这就是为什么我在服务器端更改代码时得到空数组或空数组
  • 亲爱的 ajax 类型被提到指定方法类型,我已经放在那里
【解决方案2】:

在我将类型更改为 Post 然后添加字段 _method: PUT 后它工作正常 即

$.ajax({
      url: "{{URL::to('match')}}/"+ id,
      type: 'POST',
      // dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
      data: {
        _method: 'PUT',
        match_id : id,
        start_time : newTime,
        competitionId: {{$cid}},
        _token:     '{{ csrf_token() }}'
      }
    })

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2021-08-16
    • 2021-08-29
    • 2017-11-22
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    相关资源
    最近更新 更多