Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MethodNotAllowedHttpException错误在使用ajax的Laravel 5中_Php_Jquery_Ajax_Laravel 5 - Fatal编程技术网

Php MethodNotAllowedHttpException错误在使用ajax的Laravel 5中

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',

我正试图用ajax上传一个图像,我得到:加载资源失败:服务器响应状态为500(内部服务器错误)。以下是我的ajax:

$('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]);