$ .ajax不使用数据上传文件:对象数组方法

时间:2017-04-28 12:18:16

标签: javascript jquery ajax forms file-upload

我已经搜遍了整个地方的堆栈溢出,找不到与我的问题相近的解决方案或帖子。

所以如果在我道歉之前已经发布了这个帖子。

我使用不同的方法发布一些信息,而不是在我向您展示代码后发布我将解释的表单:)

Jquery的:

rdd.collectAsMap()

所以从这个脚本中我得到了表单中的所有字段,包括一些动态字段。

我之所以这样做而不是更简单的方式:

    $("#submit-add-cpos").on('click',function(){

    var checkHowManyInstallments = $('#installment-ammount').val();
                var checkCpoNumber = $('#addcponumber').val();
                var checkCpoTotalPrice = $('#addcpoprice').val();
                var checkCpoContactName = $('#addcpocontactname').val();

                var form_data = new FormData();

                form_data.append("type", 'addcpo');
                form_data.append("quoteid", '<?php echo $_GET['id']; ?>');
                form_data.append("installmentamount", checkHowManyInstallments);
                form_data.append("cponumber", checkCpoNumber);
                form_data.append("costcode", '<?php echo $quotecostcode; ?>');
                form_data.append("cpocontactname", checkCpoContactName);
                form_data.append("cpotitle", '<?php echo $quotetitle; ?>');

                var checkDynamicValues = '';
                var checkDynamicValue1 = '';
                var checkDynamicValue2 = '';
                var checkmakename1 = '';
                var checkmakename2 = '';
                if(checkHowManyInstallments != 'undefined' && checkHowManyInstallments != '' && checkHowManyInstallments != 0){

                    for(var makingi = 1; makingi <= checkHowManyInstallments; makingi++){

                        checkDynamicValue1 = $('#cpo-adddate-' + makingi).val();
                        checkDynamicValue2 = $('#cpo-addprice-' + makingi).val();

                        form_data.append('cposadddate' + makingi, checkDynamicValue1);
                        form_data.append('cposaddvalue' + makingi, checkDynamicValue2);

                    }

                }

                $.ajax({
                    url: '/Applications/Controllers/Quotes/ajax-add-sin.php',
                    dataType: 'script',
                    cache: false,
                    contentType: false,
                    processData: false,
                    data: form_data, // Setting the data attribute of ajax with file_data
                    type: 'post',
                    success: function(data) {
                    $('body').html(data);
                    }
                });

});

由于某种原因,无论我尝试什么,它都不会找到发布的信息,所以我能做的唯一方法就是找到每个id并从中获取值。

现在问题是,上传文件,你不能简单地上传文件,因为没有发布任何文件。

如果不发布表单,我将如何上传文件?

由于

2 个答案:

答案 0 :(得分:0)

它没有发布文件的原因仅仅是因为我没有给它发送文件...

18个小时的直接工作在这里没有与我达成一致。

基本上我需要添加以下代码

var checkCpoFiles = $("#addcpofile").prop("files")[0];
form_data.append("cpofile", checkCpoFiles);

现在一切正常

:)

答案 1 :(得分:0)

请浏览此页Ajax Upload image

这里有示例代码,可能有帮助

<html>
    <head>
        <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js'></script>
    </head>
<body>

    <form enctype="multipart/form-data" action="uploadfile.php" method="POST" id="imageUploadForm">

        <input type="file" name="upload" />
        <input type="submit"/>

    </form>

</body>
<script>
$(document).ready(function (e) {
    $('#imageUploadForm').on('submit',(function(e) {
        e.preventDefault();
        var formData = new FormData(this);

        $.ajax({
            type:'POST',
            url: $(this).attr('action'),
            data:formData,
            cache:false,
            contentType: false,
            processData: false,
            success:function(data){
                console.log("success");
                console.log(data);
            },
            error: function(data){
                console.log("error");
                console.log(data);
            }
        });
    }));
});
</script>

uploadfile.php

<?php

if(move_uploaded_file($_FILES['upload']['tmp_name'],$_FILES['upload']['name'])) {

    echo "File uploaded successfully";

} else {

    echo "Unable to upload the file";

}
?>

希望它有所帮助!一切顺利!