Laravel ajax登录空白字段

时间:2016-09-18 14:03:35

标签: ajax laravel authentication

我正在使用Laravel 5.2及其Auth scafolding。

我正在尝试创建默认登录表单,以使用Ajax(无需重新加载页面)。

我正在使用reqwest.js进行ajax请求。

这是我的ajax代码:

<script data-cfasync="false" type="text/javascript" src="{{asset('js/lib/reqwest.min.js')}}"></script>
<script type="text/javascript">
var thisForm = document.querySelector('#authLogin');
thisForm.addEventListener('submit', function(f){
  f.preventDefault();
  reqwest({
    url: thisForm.getAttribute('action'),
    method: thisForm.getAttribute('method'),
    contentType: 'application/json',
    headers: {
          'X-CSRF-TOKEN': document.getElementById('csrf_meta').getAttribute('content')
    },
    data: '_token='+thisForm.elements._token.value+'&email=myemail@live.com&password=12345',
    success:function (response){

    }
  });
});
</script>

它使用\vendor\laravel\framework\src\Illuminate\Foundation\Auth\AuthenticatesUsers.php login()函数来处理登录请求:https://i.gyazo.com/bfe6790934f711f4c1d35f6670c20caa.png

问题在于:

1)当我使用默认的普通登录表单/login(没有ajax)时,上面的类中的$request->all()会返回所有提交的表单字段(很棒,这很完美)

2)但是当我通过Ajax POST请求提交相同的表单/login时,$request->all()返回空数组:https://i.gyazo.com/44e2fc6f438bba27a2baab9f7d3b38d6.png

谁能告诉我这里做错了什么?我疯了,不知道可能出了什么问题。我到处寻找解决方案,但仍然没有。

感谢。

1 个答案:

答案 0 :(得分:0)

对不起,我傻了,我弄清楚它返回空数组的原因。

在我的ajax请求中,我有contentType: 'application/json',,但我的表单数据不是JSON格式,而是字符串参数格式。