javascript - 在 laravel 5.6 中使用 ajax 发布图片
问题描述
我想为ckeditor创建一个上传适配器,
我的 laravel ajax 应用程序有问题,
这是我的代码。
export default class UploadAdapter {
constructor(loader) {
this.loader = loader;
}
upload() {
return new Promise((resolve, reject) => {
let data = new FormData();
data.append('upload', this.loader.file);
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: '/loadImage',
type: 'POST',
data: data,
dataType: 'json',
async:false,
processData: false,
contentType: false,
success: function (data) {
console.log(data.get('upload'));
},
error: function (request, status, error) {
console.log(error);
}
});
});
}
}
我坚持用 ajax 响应 laravel 控制器。
这是我的控制器功能:
try {
$file = $request->file('upload');
$uploader = MediaUploader::fromSource($file);
$uploader->setAllowedMimeTypes(['image/jpeg', 'image/gif', 'image/png']);
$uploader->setAllowedExtensions(['jpg', 'jpeg', 'png', 'gif']);
$media = $uploader->upload();
return response()->json([
'uploaded' => true,
'url' => $media->getUrl()
]);
} catch (\Exception $e) {
return response()->json(
[
'uploaded' => false,
'error' => [
'message' => $e->getMessage()
]
]
);
}
这是我的错误
SyntaxError: Unexpected end of JSON input
at parse (<anonymous>)
at ajaxConvert (app.js:11826)
at done (app.js:12294)
at XMLHttpRequest.<anonymous> (app.js:12587)
我的代码有什么错误???
我无法在 laravel 控制器中获取文件信息..
我该如何解决这个问题...?请帮帮我!!!
解决方案
您有数据 - 为空
JSON.parse(''); // SyntaxError: Unexpected end of input
添加验证:
data = data != "" ? $.parseJSON(data) : {};
推荐阅读
- xslt - 使用 document() 时排除 XSLT 中的单个元素
- go - 有没有办法将二维切片插入 sqlite 数据库?
- smartsheet-api - 在 API 调用中创建系统列空白
- javascript - 如何检查url是否包含父页面url?
- angular - Ionic 3 按钮控制器
- python - 尽管使用推荐的方法来阻止它,pyinstaller 仍然打开控制台
- php - 如何使用 ajax 在引导模式中加载某种类型的文件
- java - 匿名类可以换成lambda吗?
- ssrs-tablix - 建议在哪里查找为什么我的报告有额外的空白页
- java - 收到致命警报:Java 1.7 上的 handshake_failure