【问题标题】:Laravel5 file Upload via AjaxLaravel5 文件通过 Ajax 上传
【发布时间】:2015-09-18 08:35:52
【问题描述】:

当我上传文件时显示一些错误。错误详情和文件内容如下。你能检查一下并帮我解决这个问题吗?

错误

 Whoops, looks like something went wrong.

 MethodNotAllowedHttpException in RouteCollection.php line 201:

 in RouteCollection.php line 201

at RouteCollection->methodNotAllowed(array('GET', 'HEAD')) in RouteCollection.php line 188

at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD')) in RouteCollection.php line 140

at RouteCollection->match(object(Request)) in Router.php line 746

at Router->findRoute(object(Request)) in Router.php line 655

at Router->dispatchToRoute(object(Request)) in Router.php line 631

at Router->dispatch(object(Request)) in Kernel.php line 236

etc

routes.php

Route::post('/ambition/update', [
    'before'  => 'csrf',
    'as'      => 'tagambitionupdate',
    'uses'    => 'TagambitionController@update'
]);

TagambitionController.php

public function update(TagambitionRequest $request)
    {
        $userTagID     = $request->hiddenid;
        $file          = $request->file('file');
        dd($file);
    } 

JS

 $(document).ready(function() {
        /* Upload files of ambition tags begin*/
        $("#submit").click(function(){
            alert('hai');
            var form      = $("#addForm")[0];
            var formdata  = new FormData(form);
            formdata.append('file', 'file');
            $.ajax({
                url : "/ambition/update",
                type: "POST",
                data : formdata,
                processData: false,
                contentType: false,
                success:function(data){
                    alert(data);
                }
            });
        });
        /* Upload files of ambition tags end*/
    });

forntend.blade.php

<div class="tag-handler-ambition-response">
                        <form id="addForm" method="post" enctype="multipart/form-data"><span id="tag-ambition-append">Test</span><input name="file" type="file" id="file" ><input name="hiddenid" id="hiddenid" type="hidden" value='{{ $id }}' ><input type="hidden" name="_token" value="{{ csrf_token() }}"><button class="btn btn-default" id="submit" >Submit</button></form>
                    </div>

【问题讨论】:

  • 你能在你的 javascript 脚本中做一个console.log(url) 吗?并发布结果?你确定你在正确的网址发帖吗?
  • @Harry Geo,我的控制台显示错误“NetworkError: 405 Method Not Allowed - ct.dev/ct”。我发布了正确的网址
  • 那是请求失败的结果,我问的是你的url?你确定你在http://yourdomain.com/ambition/update发帖吗?也看看这个thread
  • @HarryGeo,是的,发布网址是正确的。 Firebug Net 显示 ----------------- 25603393529504 Content-Disposition: form-data; name="hiddenid" 28 -----------------25603393529504 内容处置:表单数据; name="_token" wdqLkfj10vaj9efEV2dncm3v6E0KLw52ArQXbXCl -----------------------------25603393529504--

标签: php ajax laravel laravel-5


【解决方案1】:

我终于得到了我的结果。我已将按钮单击功能更改为表单提交。请在下面检查我的代码。我可以使用 Laravel5 和 jQuery ajax 上传文件而无需刷新页面。

jS

$("#addForm_"+response.id).submit(function(e){
                            e.preventDefault();
                            var form      = $("#addForm_"+response.id)[0];
                            var formdata  = new FormData(form);
                            formdata.append('file', 'file_'+response.id);
                            $.ajax({
                                url : "/ambition/update",
                                type: "POST",
                                data : formdata,
                                processData: false,
                                contentType: false,
                                success:function(data){
                                }
                            });
                            e.preventDefault();
                        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 2012-10-29
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    相关资源
    最近更新 更多