输入(文件)和输入(文本)与一个ajax发送

时间:2016-01-11 04:16:46

标签: ajax

HTML

<body>
    <form method="post" action="" id="dataForm" enctype="multipart/form-data">
        <input type="text" id="textSelector"/>
        <input type="file" id="fileSelector"/>
        <button name="sub-comfirm" class="btn-selection-content" type="submit" id="sub-comfirm">Send</button>
    </form>
</body>

JS / AJAX

var fileVar = null;// global var to store file info
$(document).ready(function(){
    $('#dataForm').on('submit', function(e) {
        e.preventDefault();
        SendData();
    });

    $('#fileSelector').on('change',function(ev){
        fileVar = null;
        fileVar = new FormData();
        $.each(ev.target.files, function(key, value)
        {
            fileVar.append(key, value);                 
        });
    });
});

function SendData(){
    var formData = new FormData($("#dataForm")[0]);
    // should i add the filerVar like this ?
    // formData.append("Image", fileVar);

    $.ajax({
        type: "POST",
        url: "checkinput.php",//you need to add this '?files part' to URL
        data: formData,// use fileVar here now
        cache: false,
        processData: false, 
        // contentType: false, 
        success:function(data)
        {
            console.log(data);  
            console.log("success");
        },
        error: function(jqXHR, textStatus, errorThrown) 
        {
            console.log("failure");
        }
    });
}

PHP

print_r($_POST);
print_r($_FILES);

我的意图是在一个ajax中发送输入(文件)和输入(文本),如果我用fileVar添加ajax数据,我可以得到输入文件值,但我不能得到我的输入文本值我不明白为什么,谁能告诉我我做错了什么?

var formData = new FormData($(&#34; #dataForm&#34;)[0])是获取两个ajax的方法,但我无法获得任何输入文本值。

任何人都可以教我如何使这项工作?

1 个答案:

答案 0 :(得分:1)

我认为您需要指定输入名称属性:

<body>
    <form method="post" action="" id="dataForm" enctype="multipart/form-data">
        <input type="text" id="textSelector" name="textSelector"/>
        <input type="file" id="fileSelector" name="fileSelector"/>
        <button name="sub-comfirm" class="btn-selection-content" type="submit" id="sub-comfirm">Send</button>
    </form>
</body>

希望有所帮助。