Php MethodNotAllowedHttpException错误在使用ajax的Laravel 5中
我正试图用ajax上传一个图像,我得到:加载资源失败:服务器响应状态为500(内部服务器错误)。以下是我的ajax:Php MethodNotAllowedHttpException错误在使用ajax的Laravel 5中,php,jquery,ajax,laravel-5,Php,Jquery,Ajax,Laravel 5,我正试图用ajax上传一个图像,我得到:加载资源失败:服务器响应状态为500(内部服务器错误)。以下是我的ajax: $('document').ready(function() { $('#uploadImage').change(function(){ image = $('#uploadImage').val; token = $('#token').val(); $.ajax ({ type: 'POST',
$('document').ready(function() {
$('#uploadImage').change(function(){
image = $('#uploadImage').val;
token = $('#token').val();
$.ajax ({
type: 'POST',
url: '/photo',
data: { image , token },
success: function(){
$('.img-thumbnail').attr("src", 'images/new_image.png');
}
})
})
});
这是我的路线:route::post('/photo','ShopsController@uploadPhoto');代码>
这是我的控制器:
public function uploadPhoto(Request $request)
{
//Sets file name according to authenticated shop id
$imageName = 'new_image.png';
//Save file to public/images
$img = Image::make($request->file('image'));
$img->resize(380, 300)->save('images/' . $imageName, 60);
}
这是我的表格:
<form action="{{ action('ShopsController@store') }}" method="post" enctype="multipart/form-data">
<input id="token" type="hidden" name="_token" value="{{ csrf_token() }}">
<input id="uploadImage" class="btn btn-upload" type="file" name="image"> </form>
AJAX文件上传比只获取图像元素的value属性要复杂一些
请阅读此问题的第一个答案:
它使用FormData对象:
虽然并非所有浏览器都支持它
这里有一个简单的jQuery ajaxFileUpload示例:表单操作应该是action('ShopsController@uploadPhoto)
,不是吗?根据您要发布到的路由?检查AccessControlNote中提供的访问权限下划线int标记(_标记)-确保您在ajax postNop的数据中发送的下划线与ajax postNop应该指向的下划线相同ShopsController@uploadPhoto. 你说访问控制是什么意思。我实际上是ajax初学者。您的web服务器是否具有存储文件夹或存储图像的任何位置的写入权限?谢谢您的回答。现在我检查了一下,当我设置一个“get”方法时,它会更进一步。因此,我认为问题在于,尽管我在laravel上设置了一条“post”路线,但它的行为就像一个get。你能给我解释一下吗?image=$('#uploadImage').val;这行不通。图像有不同的格式,每种格式都有自己的编码。image=$('#uploadImage')。val根本不会检索图像。而且你的投递路线也不像GET。因为要么定义了GET路由,要么默认的GET方法会给出一些默认错误,而不是内部错误。Nvm我会找到其他方法。顺便说一句,谢谢你的ajax课程和你的回答。
// HTML file input, chosen by user
formData.append("userfile", fileInputElement.files[0]);