【问题标题】:Not getting post data in controller from ajax没有从ajax获取控制器中的发布数据
【发布时间】:2018-08-25 03:27:14
【问题描述】:

我将表单数据发布到 A 控制器,但是当我发布数据时,当我调用 print_r($_POST); 它返回的空数组时,我没有进入控制器,我不知道我错过了什么

请告诉我你想从我这里得到什么输入

var data2 = [];
data2['user_firstname'] = user_firstname;
data2['user_lastname'] = user_lastname;
data2['user_phone'] = user_phone;
data2['user_email'] = user_email;
data2['user_username'] = user_username;
data2['user_password'] = user_password;
console.log(data2);

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

$.ajax({
    type: "POST",
    url: "http://localhost/shago/register/submit",
    data: { 'data2': data2 },
    // dataType: "text",
    success: function(resultData) { console.log(resultData); }
});

控制器代码

public function submit()
{
    print_r($_POST);
}

【问题讨论】:

  • 把 laravel 代码也贴出来
  • 请看更新的问题
  • 尝试`print_r(request()->all());`
  • 获取空白数组

标签: laravel laravel-5


【解决方案1】:

可能请求被 Laravel CSRF 保护策略拦截。为了证明这一点,您应该在 VerifyCsrfToken 中间件文件中添加请求 URL,如下所示: protected $except = [ 'yoururl' ];
如果您可以在控制器中获得您期望的数据,那么我是对的。

【讨论】:

    【解决方案2】:

    感谢所有我在发送数组数据时发现的错误现在我已经修改了代码并且它工作正常 看代码

     $.ajax({
              url: "register/submit", 
              type: "post",
              headers: {
                  'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
              },
              data: {'user_firstname':user_firstname,'user_lastname':user_lastname,'user_phone':user_phone,'user_email':user_email,'user_username':user_username,'user_password':user_password},
                  success: function(result){
                     console.log(result);
                    }
                });
    
          }
    

    【讨论】:

      【解决方案3】:

      您需要将 Request Class 注入到 submit 方法中。这可以帮助您:

      public function submit(\Illuminate\Http\Request $request)
      {
          dd($request->all()); // will print all data
      }
      

      如果您不想注入 Request,那么此代码可能会对您有所帮助

      public function submit()
      {
          dd(request()->all()); // will print all data
      }
      

      祝你好运!!!

      【讨论】:

        【解决方案4】:

        尝试在提交函数中添加 Request 作为参数

        public function submit(Request $request)
        {
            print_r($request);
        }
        

        另外,您真的需要将信息作为数组传递吗? 您也可以创建一个新对象并传递它。

        var data2={
        'user_firstname': user_firstname,
        'user_lastname': user_lastname,
        'user_phone': user_phone,
        'user_email': user_email,
        'user_username': user_username,
        'user_password': user_password
        };
            $.ajaxSetup({
            headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        
        $.ajax({
        
          type: "POST",
          url: "http://localhost/shago/register/submit",
          data: data2,
          success: function(resultData) { console.log(resultData); }
        });
        

        【讨论】:

          【解决方案5】:

          你可以使用下面的

          public function submit(Request $request)
          {
               dump($request);
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-08-19
            • 2014-08-29
            • 1970-01-01
            • 2020-09-24
            • 2015-06-05
            • 2013-05-08
            • 1970-01-01
            相关资源
            最近更新 更多