上传使用Ajax数据和文件的一种形式? [英] Uploading both data and files in one form using Ajax?

查看:98
本文介绍了上传使用Ajax数据和文件的一种形式?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用jQuery和Ajax的我的形式提交的数据和文件,但我不知道如何在一个窗体数据和发送文件?

我目前做的几乎是相同的两种方法,但以何种方式将数据收集到一个数组不同的是,该数据使用 .serialize(); 但文件使用 =新FORMDATA($(本)[0]);

是否有可能两种方法相结合,能够通过Ajax的上传在一个窗体文件和数据?

数据的jQuery,Ajax和HTML

  $(#表单数据)。递交(函数(){

    VAR FORMDATA = $(本).serialize();

    $阿贾克斯({
        网址:window.location.pathname,
        键入:POST,
        数据:FORMDATA,
        异步:假的,
        成功:功能(数据){
            警报(数据)
        },
        缓存:假的,
        的contentType:假的,
        过程数据:假的
    });

    返回false;
});

<形式ID =数据的方法=邮报>
    <输入类型=文本名称=第一值=鲍勃/>
    <输入类型=文本名称=中间值=詹姆斯/>
    <输入类型=文本名称=最后一个值=史密斯/>
    <按钮>提交< /按钮>
< /形式GT;
 

文件的jQuery,Ajax和HTML

  $(#表单文件)。递交(函数(){

    变种FORMDATA =新FORMDATA($(本)[0]);

    $阿贾克斯({
        网址:window.location.pathname,
        键入:POST,
        数据:FORMDATA,
        异步:假的,
        成功:功能(数据){
            警报(数据)
        },
        缓存:假的,
        的contentType:假的,
        过程数据:假的
    });

    返回false;
});

<形式ID =文件的方法=邮报是enctype =的multipart / form-data的>
    <输入名称=图像类型=文件/>
    <按钮>提交< /按钮>
< /形式GT;
 

我如何可以结合上面的,这样我可以通过Ajax发送数据和文件的一种形式?

我的目标是能够与阿贾克斯将所有的这种形式在一个职位,这可能吗?

 <形式ID =数据文件的方法=邮报是enctype =的multipart / form-data的>
    <输入类型=文本名称=第一值=鲍勃/>
    <输入类型=文本名称=中间值=詹姆斯/>
    <输入类型=文本名称=最后一个值=史密斯/>
    <输入名称=图像类型=文件/>
    <按钮>提交< /按钮>
< /形式GT;
 

解决方案

我用错了jQuery的标识问题。

可以上传数据和文件一种形式的使用AJAX

PHP + HTML

 &LT ;?
    的print_r($ _ POST);
    的print_r($ _ FILES);
?>

<形式ID =数据的方法=邮报是enctype =的multipart / form-data的>
    <输入类型=文本名称=第一值=鲍勃/>
    <输入类型=文本名称=中间值=詹姆斯/>
    <输入类型=文本名称=最后一个值=史密斯/>
    <输入名称=图像类型=文件/>
    <按钮>提交< /按钮>
< /形式GT;
 

的jQuery + Ajax的

  $(#表单数据)。递交(函数(){

    变种FORMDATA =新FORMDATA($(本)[0]);

    $阿贾克斯({
        网址:window.location.pathname,
        键入:POST,
        数据:FORMDATA,
        异步:假的,
        成功:功能(数据){
            警报(数据)
        },
        缓存:假的,
        的contentType:假的,
        过程数据:假的
    });

    返回false;
});
 

短版

  $(#表单数据)。递交(函数(){

    变种FORMDATA =新FORMDATA($(本)[0]);

    $。员额($(本).attr(行动),FORMDATA,功能(数据){
        警报(数据);
    });

    返回false;
});
 

I'm using jQuery and Ajax for my forms to submit data and files but I'm not sure how to send both data and files in one form?

I currently do almost the same with both methods but the way in which the data is gathered into an array is different, the data uses .serialize(); but the files use = new FormData($(this)[0]);

Is it possible to combine both methods to be able to upload files and data in one form through Ajax?

Data jQuery, Ajax and html

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

    var formData = $(this).serialize();

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

    return false;
});

<form id="data" method="post">
    <input type="text" name="first" value="Bob" />
    <input type="text" name="middle" value="James" />
    <input type="text" name="last" value="Smith" />
    <button>Submit</button>
</form>

Files jQuery, Ajax and html

$("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;
});

<form id="files" method="post" enctype="multipart/form-data">
    <input name="image" type="file" />
    <button>Submit</button>
</form>

How can I combine the above so that I can send data and files in one form via Ajax?

My aim is to be able to send all of this form in one post with Ajax, is it possible?

<form id="datafiles" method="post" enctype="multipart/form-data">
    <input type="text" name="first" value="Bob" />
    <input type="text" name="middle" value="James" />
    <input type="text" name="last" value="Smith" />
    <input name="image" type="file" />
    <button>Submit</button>
</form>

解决方案

The problem I had was using the wrong jQuery identifier.

You can upload data and files with one form using ajax.

PHP + HTML

<?
    print_r($_POST);
    print_r($_FILES);
?>

<form id="data" method="post" enctype="multipart/form-data">
    <input type="text" name="first" value="Bob" />
    <input type="text" name="middle" value="James" />
    <input type="text" name="last" value="Smith" />
    <input name="image" type="file" />
    <button>Submit</button>
</form>

jQuery + Ajax

$("form#data").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;
});

Short Version

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

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

    $.post($(this).attr("action"), formData, function(data) {
        alert(data);
    });

    return false;
});

这篇关于上传使用Ajax数据和文件的一种形式?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆