这里是我的Blade的代码,它可以工作并发送请求,但我无法从AJAX中检索数据。
Javascript
function addUser() {
var name=document.getElementById("name").value;
var email=document.getElementById("email").value;
var password=document.getElementById("password").value;
$.ajaxSetup({
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
});
$.ajax({
type:'POST',
url:'addUser',
data: {name:name,email:email,password:password,},
success:function(data) {
$("#msg").html(data.msg);
},
error: function (data, textStatus, errorThrown) {
console.log(data);
},
contentType: false,
processData: false,
});
}
控制器
public function index(Request $request) {
$msg=User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt( $request->password),
]);
return response()->json(array('msg'=> $msg), 200);
}
删除
contentType: false,
processData: false,
默认情况下,processData
设置为true
,并假设传递的数据是一个对象,将其设置为false
将阻止默认的解析行为——这是您不希望的!这在想要发送原始JSON的情况下可能很好,但这与表单数据不同。
默认情况下,contentType
也作为application/x-www-form-urlencoded
传递。如果将contentType
设置为false
,则不设置任何内容标头!因此,通过删除这两个值,您将获得成功发送ajax调用的正确默认值。