当我ajax访问服务器时,我收到422(不可处理的实体)错误。
有谁知道如何修复它?
<meta name="csrf-token" content="{{ csrf_token() }}" />
<script>
$(document).ready(function(){
$("#frm").submit(function(e){
e.preventDefault();
var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
$.ajax({
type: 'post',
url : 'http://example.com/contact',
data: {_token: CSRF_TOKEN},
dataType: 'JSON',
success : function(data){
console.log(data);
}
},"json");
});
});
</script>
我收到了这个错误。
http://example.com/contact 422 (Unprocessable Entity)
我通过Google Chrome检查了表单数据。看起来好像..
_token:nBfBpE56cFqgmEy94KCji975dZXt3K5MSnlHJT5y
更新
我添加了&#39;地址&#39;参数是通过以下ConvertToInt32的commnet获得的参数。然后我又收到了HTTP 403 (Forbidden) error.
<script>
$(document).ready(function(){
$("#frm").submit(function(e){
e.preventDefault();
var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
var address = $("textarea#address").val();
$.ajax({
type: 'post',
url : 'http://example.com/contact',
data: {'_token': CSRF_TOKEN, 'address' : address},
dataType: 'JSON',
success : function(data){
console.log(data);
}
},"json");
});
});
</script>
更新
应用\ HTTP \请
<?php namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
abstract class Request extends FormRequest {
public function authorize()
{
// Honeypot
return $this->input('address') == '';
}
}
ContactRequest
?php namespace App\Http\Requests;
class ContactRequest extends Request {
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'message' => 'required'
];
}
}
请求参数可能没问题。
_token:nBfBpE56cFqgmEy9wKCjixf5dZXt3K4MSnlHJT3y
address:a
答案 0 :(得分:1)
422 是laravel中通过ajax提交表单时无效数据的自然响应代码。您的数据必须包含请求规则方法中定义的所有字段。
403 表示您无权执行该请求。在您的请求类中,有一个名为authorize()
的方法。您可以使用此方法检查用户是否有权发出此请求。如果返回false,则会出现 403 错误。