我试图在Laravel 5.2.29中使用Froala文本编辑器。我按照文档来设置freya,它的效果很棒!直到我尝试上传一些东西。我可以使用普通的html文件按钮上传文件没有问题,但由于某种原因,ajax请求似乎无法到达我的控制器。我无法弄清楚为什么。
这是我的JQuery代码,它位于带编辑器的页面上(我使用了Froala文档来编写):
<script>
$(function() {
$('#body, #excerpt').froalaEditor({
toolbarButtons: ['undo', 'redo', 'html', '-', 'fontSize', 'paragraphFormat', 'align', 'quote', '|', 'formatOL', 'formatUL', '|', 'bold', 'italic', 'underline', '|', 'insertLink', 'insertImage', 'insertVideo', 'insertFile', 'insertTable'],
heightMin: 300,
imageUploadParam: 'file',
imageUploadMethod: 'POST',
// Set the image upload URL.
imageUploadURL: '/fileUpload/{{ $department->id }}/post',
// Pass the department id
imageUploadParams: {
id: {{ $department->id }},
froala: 'true'
}
});
});
</script>
我创建了一个test.php文件,其中包含以下代码,使用froala文档方法对其进行测试,解决此问题并且可以正常工作:
<?php
// Generate response.
$response = new StdClass;
$response->link = "http://my.server/image.jpg";
echo stripslashes(json_encode($response));
?>
但由于某种原因,laravel不会返回正确的json响应。来自test.php文件的json响应是`{&#34; link&#34;:&#34; http://my.server/image.jpg&#34;}&#39;当我直接导航它。但是当我在路线文件中测试它时(甚至在控制器中也没有测试它),我做了一个看起来像这样的路线:
Route::get('/test', function(){
return stripslashes(response()->json(['link' => "http://my.server/image.jpg"])->content());
// echo '{"link":"http://my.server/image.jpg"}';
});
这会返回{"link":"http://my.server/image.jpg"}
,这对我来说看起来完全一样。但是当我在POST请求之后返回它时,它只是说“出了问题,请再试一次。”#39;
我做错了什么?
答案 0 :(得分:0)
有几个问题,但最令人困惑(但应该很明显)的答案之一是传递一个csrf令牌作为laravel需要。这意味着将'_token': {!! csrf_token() !!}
添加到jquery中的imageUploadParams
项。我在这里完成了完整的设置指南:http://thelightmedia.net/blog/using-froala-to-upload-images-with-laravel-5-2