无法使用jquery获取ajax响应(laravel 5.3)

时间:2017-06-22 08:00:15

标签: jquery ajax laravel

我在laravel工作。我有表格数据和要在DB中使用ajax提交的文件。

它的创建但不会在成功方法中返回任何响应,这是我的代码

for /l %i in (1,1,199) do md prefix-%a

我有表格中的下拉列表逐个插入或附加文件,所以我使用$('#student-frm').submit(function(){ $("#processing").removeAttr("style", "display:none"); var form_data = $("#student-frm").serialize(); form_data.append("file", $("#import").get(0).files[0]); $.ajax({ url: '/student-management/emails', type: 'POST', data: form_data, success: function(result) { alert(result); } }); return false; });

如果我从上面的方法中移除以下代码行,则可以正常工作。

form_data.append().

我从Controller返回

form_data.append("file", $("#import").get(0).files[0]);

它在浏览器中返回

请帮助解决这个问题

由于

4 个答案:

答案 0 :(得分:1)

问题是GetFriendImagesearialze是两回事。您无法将文件附加到FormData数据。在这种情况下,您需要searialze。使用它像:

FormData

并附加您想要的数据。

例如:

var form_data= new FormData();

这就像将html元素附加到var file_data = $('#import').prop('files')[0]; var form_data = new FormData(); form_data.append('file', file_data); // append file to form, in the same way you can append more data in key, value pair 中,而不是将该表单提交给服务器。

在服务器端,您可以获得附加的form,如:

file

答案 1 :(得分:0)

这是工作代码: jquery代码:

$('#student-frm').submit(function(){
    $("#processing").removeAttr("style", "display:none");
    var formData = new FormData($('#student-frm'));
    $.ajax({
        url: '/student-management/emails',
        type: 'POST',
        data: formData,
        success: function(result) {
            alert(result);
        }
    });
    return false;
});

Laravel代码:

$destinationPath = 'path/th/save/file/';
$image = $request->file('input_file');
$name =  $image->getClientOriginalName();
$file_name =  $name;
$image->move($destinationPath,$file_name);

答案 2 :(得分:0)

在使用formdata发送文件时,在ajax代码中添加这两行,因此需要添加这些行

 processData: false,
 contentType:  false,

所以你的ajax会像这样

$.ajax({
    url: '/student-management/emails',
    type: 'POST',
    data: form_data,
    processData: false,
    contentType:  false,
    success: function(result) {
        alert(result);
    }
});

答案 3 :(得分:0)

使用表单数据进行上传:

$('#student-frm').submit(function(){
    $("#processing").removeAttr("style", "display:none");
    var form = $('form')[0]; 
    var formData = new FormData(form);

    // Attach file
    formData.append('file', $('input[type=file]')[0].files[0]); 

     $.ajax({
            url: '/student-management/emails',
            type: 'POST',
            data: form_data,
            success: function(result) {
                alert(result);
            }
        });
        return false;
 });

从Laravel Controller

中获取请求文件
if ($request->hasFile('file')) {
    $file = $request->file('file');
}