我正在尝试使用formdata通过ajax发送包含图像文件的一组数据,但是当我想在laravel控制器中访问该数据时,它会显示一个空白数组。
这是我的ajax代码 -
var fd = new FormData();
fd.append("photo",files[0]);
fd.append("user_id",localStorage.getItem('userId'));
fd.append("doctype","dl_image");
console.log(fd);
//ajax code
$http.post('uploadfile', fd, {
withCredentials: true,
headers: { 'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content') }
}).success(function(data, status) {
console.log(data);
});
PHP代码 -
$data = Request::all();
$photo = Request::file('photo');
$userid = Request::get('user_id');
$doctype = Request::get('doctype');
$postData = array(
'photo' => $photo,
'user_id' => $userid,
'doctype' => $doctype
);
var_dump($data);
die();
当数据被转储到浏览器的控制台时,它会显示
array(0) {
}
需要帮助。
答案 0 :(得分:1)
AngularJS使用application/json
类型&发送POST请求{默认} JSON
正文
所以我认为你需要使用:
headers: { 'Content-Type' : 'application/x-www-form-urlencoded'},
data: $.param(data)
ajax
代码中的
您可能需要使用$name = Input::get('name');
而不是$userid = Request::get('user_id');
答案 1 :(得分:0)
请尝试序列化jquery的方法。
function myForm( form ){
var formData = $(form).serialize();
att=form.attr("action") ;
$.post(att, formData).done(function(data){
alert(data);
});
return true;
}
答案 2 :(得分:0)
使用FormData API POST文件和数据时,务必将Content-Type header设置为undefined
。
尝试:headers: { 'Content-Type': undefined }