通过ajax post将文件与表单数据一起发送

2021-12-24 00:00:00 file-upload jquery php javascript ajax

我正在尝试通过 ajax 上传文件以及表单中的一些字段.但是,它不起作用.我收到此错误.

<块引用>

未定义索引:-文件

这是我的代码.

HTML

 <div class="form-group"><label class="col-md-4 control-label" for="file">上传软件/文件</label><div class="col-md-4"><input id="file" name="file" class="input-file" type="file">

<div class="form-group"><label class="col-md-4 control-label" for="price">Price($)</label><div class="col-md-4"><input id="price" name="price" type="text" placeholder="Price" class="form-control input-md" required="">

Ajax

$("#add_product").click(function(e){e.preventDefault();product_name = $("product_name").val();//d = $("#add_new_product").serialize();$.ajax({类型:'POST',网址:'ajax.php',数据:$("#add_new_product").serialize(),成功:功能(响应){//警报(响应);}})});

PHP

if (0 <$_FILES['file']['error']){回声:!";}别的{回声ASa";}

我在这里遗漏了什么?

解决方案

你可以试试用 FormData():

$("form#files").submit(function(){var formData = new FormData($(this)[0]);$.ajax({网址:window.location.pathname,类型:'POST',数据:表单数据,异步:假,成功:功能(数据){警报(数据)},缓存:假,内容类型:假,过程数据:假});返回假;});

以上是示例代码,但您可以使用它进行修改.

I'm trying to upload a file via ajax together with some fields in a form. However, it doesn't work. I get this error.

Undefined Index :- File

Here's my code.

HTML

    <!-- File Button --> 
    <div class="form-group">
    <label class="col-md-4 control-label" for="file">Upload Software / File</label>
    <div class="col-md-4">
    <input id="file" name="file" class="input-file" type="file">
    </div>
    </div>

<div class="form-group">
<label class="col-md-4 control-label" for="price">Price($)</label>  
<div class="col-md-4">
<input id="price" name="price" type="text" placeholder="Price" class="form-control input-md" required=""> 
</div>
</div>

Ajax

$("#add_product").click(function(e){
    e.preventDefault();
    product_name = $("product_name").val();
    //d = $("#add_new_product").serialize();
    $.ajax({
        type: 'POST',
        url: 'ajax.php',
        data: $("#add_new_product").serialize(),
        success: function(response)
        {
            //
            alert(response);

        }
    })
});

PHP

if (0 < $_FILES['file']['error']) 
{
 echo ":!";
}
else 
{
echo "ASa";
}

What am I missing here?

解决方案

Can you try using FormData():

$("form#files").submit(function(){

    var formData = new FormData($(this)[0]);

    $.ajax({
        url: window.location.pathname,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            alert(data)
        },
        cache: false,
        contentType: false,
        processData: false
    });

    return false;
});

The above is a sample code, but you may use it to modify it.

相关文章