Javascript 告诉Laravels验证器在何处查看验证请求数组

Javascript 告诉Laravels验证器在何处查看验证请求数组,javascript,ajax,laravel,validation,axios,Javascript,Ajax,Laravel,Validation,Axios,如果我使用“数据”选项使用axios验证我的前端表单,它将无法通过后端laravel应用程序中的验证 axios.post('http://example.com/', { 'Content-Type': 'multipart/form-data', Accept: 'application/json', data: { email: 'email@email.com', password: '12345678', } }).then(res =>

如果我使用“数据”选项使用axios验证我的前端表单,它将无法通过后端laravel应用程序中的验证

axios.post('http://example.com/', {
  'Content-Type': 'multipart/form-data',
  Accept: 'application/json',
  data: {
      email: 'email@email.com',
      password: '12345678',
    }
}).then(res => console.log(res))
  .catch(err => console.log(err));
因此,这里我使用“数据”选项进行验证

$request->validate([
        'email' => 'required|string|email',
        'password' => 'required|string'
]);
返回:需要422封电子邮件,需要密码

这是请求的格式化方式:

{Content-Type: "application/json", data: {email: "email@email.com", password: "12345678"}}
但是,如果我使用axios以这种方式提交表单,它将验证并登录:

'Content-Type': 'multipart/form-data',
'Accept': 'application/json',
'email': 'email@email.com',
'password': '12345678',
所以我的问题是如何告诉验证程序查看数据对象内部

编辑1: 根据请求
dd($request->attributes)返回:

ParameterBag {#53
  #parameters: []
}

这是因为您正在
axios
请求中添加
标题
作为
数据
。您的请求应如下所示:

const headers = {
    'Accept': "application/json",
    'Content-Type': "application/json",
};

let data: {
      email: 'email@email.com',
      password: '12345678',
    };

axios.post('http://example.com/',data, {headers:headers})
            .then( (response) => {
                //do the stuff
            })
            .catch( (error) => {
                // do the stuff
            });
注意:
axios
post函数将第一个
参数
作为
url
,第二个作为
数据
,第三个作为
配置(标题等)
。 你可以阅读更多关于


谢谢。

这是因为您正在
axios
请求中添加
标题作为
数据。您的请求应如下所示:

const headers = {
    'Accept': "application/json",
    'Content-Type': "application/json",
};

let data: {
      email: 'email@email.com',
      password: '12345678',
    };

axios.post('http://example.com/',data, {headers:headers})
            .then( (response) => {
                //do the stuff
            })
            .catch( (error) => {
                // do the stuff
            });
注意:
axios
post函数将第一个
参数
作为
url
,第二个作为
数据
,第三个作为
配置(标题等)
。 你可以阅读更多关于


谢谢。

问题是,为什么需要在axios中添加数据

如果要添加
数据
,则验证应如下所示:

$request->validate([
'data.email'=>'必填|字符串| email',
'data.password'=>'必需|字符串',
]);

问题是,为什么需要在axios中添加
数据

如果要添加
数据
,则验证应如下所示:

$request->validate([
'data.email'=>'必填|字符串| email',
'data.password'=>'必需|字符串',
]);

返回未经授权的。不确定原因。当然,因为如果您将axios发送的数据包装为
数据
,则需要使用
$request->get('data.email')
,而不是
$request->get('email')
,来获取电子邮件。顺便说一句,你混合了标题和数据。为什么?您不需要使用
data
包装数据,只需
axios.post('http://example.com/“,{电子邮件:”email@email.com,密码:'12345678'})
返回未经授权的。不确定原因。当然,因为如果您将axios发送的数据包装为
数据
,则需要使用
$request->get('data.email')
,而不是
$request->get('email')
,来获取电子邮件。顺便说一句,你混合了标题和数据。为什么?您不需要使用
data
包装数据,只需
axios.post('http://example.com/“,{电子邮件:”email@email.com,密码:'12345678'})