2017-04-04 42 views
0

我想提交一个单一的值如下?为什么我不能发布到使用jquery的laravel路由?

HTML:

<form class="form-horizontal" role="form" method="POST" enctype="multipart/form-data" name="frmanalyse" id="frmanalyse"> 
{{ csrf_field() }} 
<label for="marginsource" style="float: left; width:150px; text-align:left;">Margin Source</label> 
<input type="file" name="marginsource" id="marginsource" > 
<br /> 
</form> 

脚本:

<script type="text/javascript"> 
    $("#frmanalyse").submit(function(event) { 
      $.post("marginanalyser", {username: "medo ampir"}, function(data) { 
       alert(data); 
      }); 
      event.preventDefault(); 
    }); 

在laravel路线:

Route::post('marginanalyser',function(Request $request){ 
echo $request->input('username'); 

$file = $request->file('marginsource'); 
echo 'File Name: '.$file->getClientOriginalName(); 
}); 

根本没有任何信息显示。

+0

你能按下F12在浏览器中,点击选项卡网络,之后提交您的形式,检查后请求是被创建,页面包含什么?一个错误? –

+0

什么也没有。 –

+0

但有警报?因为只有发出提醒请求时才会显示提醒... –

回答

1

更改JavaScript才能使用FORMDATA你不是提交文件

$("#frmanalyse").submit(function(event) { 
    event.preventDefault(); 

    var formData = new FormData(); 
    formData.append('marginsource', $('#marginsource')[0].files[0]); 
    formData.append('username', "medo ampir"); 

    $.ajax({ 
     url : window.location.origin + "/marginanalyser", 
     type: "POST", 
     data : formData, 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     }, 
     processData: false, 
     contentType: false, 
     success:function(data, textStatus, jqXHR) { 
      console.log(data); 
     }, 
     error: function(jqXHR, textStatus, errorThrown){ 
      //if fails  
     } 
    }); 
}); 
+0

仍然没有,并且当我尝试删除“event.preventDefault();”该帖子打开一个空白页面(marginanalyser post route),但是为空 –

+0

当你删除'event.preventDefault'时,它不会使用ajax提交表单并返回到默认表单提交,因此显示空白页面 – linktoahref

+0

,因此返回到主要问题,为什么数据不受支持? –

相关问题