使用相同名称的jQuery文件上传不起作用

时间:2016-09-07 07:16:14

标签: javascript c# jquery html

我们用c#,js,jquery创建了一个寻呼机网站。我有一个正常的上传表单,用于上传c#控制器。是否刷新了相同的上载窗口,并在所有文件列表中显示新文件。

可能是用户看到他在文件中有错误并重新上传文件。如果页面未关联,则无法上载文件。我的triger功能不再起作用了。

如何在不刷新页面的情况下,使用完全相同的名称上传文件两次?

我的上传触发功能

// formUploadRisk-Formular open
    $("#uploadRiskPolicyFile").change(function () {
        if (confirm("Would you like to upload the file?")) {
            var riskId = $(managementRiskPdfMenu).data("riskId");
            var control = document.getElementById("uploadRiskPolicyFile");
            var files = control.files[0];
            var success = UploadRiskPdf(riskId, 1, files);
            if (success) {
                LoadManagementPdfMenu(riskId);
            }
            return false;
        }
    });

我的上传功能

function UploadRiskPdf(riskId, documentTypeID, files) {

    var result = false;

    // Methode to save
    var fd = new FormData();

    fd.append('file', files);

    var uploadURL = "documents/upload/risk/" + riskId + "/" + documentTypeID;

    var jqXHR = $.ajax({
        xhr: function () {
            return $.ajaxSettings.xhr();
        },
        url: uploadURL,
        type: "POST",
        async: false,
        enctype: 'multipart/form-data',
        contentType: false,
        cache: false,
        processData: false,
        data: fd,
        success: function (response) {
            var node
            result = true;
            var d = data;
        },
        error: function (data) {
            alert("Some error!")
        }
    });

    return result;
}

我的html会像这样依赖

var documentRow = $.parseHTML('<div><span><a class="risikoPdf" href="documents/customer/' + value.DocumentID + '" target="_blank"><i style="margin-right:5px;" class="fa fa-file-pdf-o fa-2x"></i>' + value.UploadDate + '_' + value.ProgramCode + '</a></span><span class="document-edit-delete fa fa-trash fa-2x"></span></div>');


$("#" + layoutId).append(documentRow);
                    

和我的HTML

<div id="uploadPdfDocumentPolicy" class="uploaderRisiko">
                <div class="browser">
                    <label>
                        <span>Policen</span>
                        <input id="uploadRiskPolicyFile" class="fa fa-plus-circle fa-lg" type="file" name="FileUploadPolicy" title="Klicken, um eine weitere Rechnung hochzuladen" />
                        <i class="fa fa-plus-circle fa-lg"></i>
                    </label>
                </div>
            </div>
            <div id="uploadPdfDocumentBill" class="uploaderRisiko">
                <div class="browser">
                    <label>
                        <span>Rechnungen</span>
                        <input id="uploadRiskBillFile" class="fa fa-plus-circle fa-lg" type="file" name="FileUploadBill" title="Klicken, um eine weitere Rechnung hochzuladen" />
                        <i class="fa fa-plus-circle fa-lg"></i>
                    </label>
                </div>
            </div>

1 个答案:

答案 0 :(得分:0)

我解决了我的问题。

我制作了一个检查器变量,用于检查值是否为空。在succsess之后我清除了输入字段的值。因为,这是对JS更改功能的更改,它将再次进入此功能,这就是为什么我需要ckecker if statment。

&#13;
&#13;
 $("#uploadRiskPolicyFile").change(function () {
        var checker = $("input[name='FileUploadPolicy']").val();
        if (checker != '') {
            if (confirm("Willst du das File hochladen?")) {
                var riskId = $(managementRiskPdfMenu).data("riskId");
                var control = document.getElementById("uploadRiskPolicyFile");
                var files = control.files[0];

                var success = UploadRiskPdf(riskId, 1, files);
                if (success) {
                    LoadManagementPdfMenu(riskId);
                    $("input[name='FileUploadPolicy']").val('');
                }
            }
        }
    });
&#13;
&#13;
&#13;