簡體   English   中英

如何在Ajax的單個FormData對象中發送多個數據?

[英]How to send multiple data in single FormData object in Ajax?

我的應用程序具有多個數據,例如文本框值,標簽值,下拉值,文件數據,並在服務器端發送相同的數據並存儲在數據庫中

為此,我使用了以下方法,但是現在我想使用Formdata並將每個值附加並發送到服務器端

如何使用具有特定對象類型的Formdata實現此方案。

下面是代碼

        var selectedText = $('#Commentinput').text();
        $('#actioncomments').text(selectedText);
        var debitEntityValue = $('#DrAccount option:selected').text();
        var creditEntityValue = $('#CrAccount option:selected').text();
        var amount = $("#Amountinput").val();
        var paymentActionReason = $('#action').text();
        var paymentCommentReason = $('#Commentinput').val();
        var prepayAccountId =@Model.prepaidBranchList.PrepaidID;
        var transactionDate = '@DateTime.Today';
        var transactionExtensions = "1";
        var fileBase64Data = $("#fileUpload").text();
        if ($('#Commentinput').val() == "") {
            paymentCommentReason = "No Comment";
        }
        else {
            paymentCommentReason = $('#Commentinput').val();
        }
        var adjustmentTransactioninfo =
       {
           PaymentReasonMasterId: paymentReasonMasterId,
           DebitEntityValue: debitEntityValue,
           CreditEntityValue: creditEntityValue,
           Amount: amount,
           PaymentActionReason: paymentActionReason,
           PaymentCommentReason: paymentCommentReason,
           PrepayAccountId: prepayAccountId,
           TransactionDate: transactionDate,
           TransactionExtensions: transactionExtensions
       };
        var data = JSON.stringify({
            'adjustmentTransactioninfo': adjustmentTransactioninfo,
            'fileData':  0
        });
        var url = "@Html.Raw(Url.Action("AdjustmentTransaction", 
        "PrepaidActivity"))";
        url += '?branchCode=' + '@Model.prepaidBranchList.IASBranchCode'
        $.ajax({
            url: url,
            traditional: true,
            data: data,
            enctype:"multipart/form-data",
            contentType: "application/json charset=utf-8",
            dataType: "json",
            type: 'POST',
            success: function (data) {
                $("#ajaxLoader").show();
                if (data != null) {

                    var ProductActionID = data.SuccessMessage.split(':');
                    uploadFile.append('ProductActionID' , ProductActionID[1]);
                    FileUpload(uploadFile);
                    var dialog = document.querySelector('#Finaldialog');
                    var ConfirmationScreen = $("<p></p>").text(data.SuccessMessage);
                    $("#finalmdl-dialog").append(ConfirmationScreen);
                    dialog.showModal();
                    dialog.querySelector('button:not([disabled])').addEventListener('click', function() {
                        dialog.close();
                        location.reload();
                    });
                }
            }
        });`

控制器代碼

 public JsonResult AdjustmentTransaction(TraxAdjustmentTransactionInfo adjustmentTransactioninfo, string fileData, string branchCode)
    {
        PrepaidAdminService.PrepaidAdminDashBoardServiceClient _PrepaidAdminService = new PrepaidAdminService.PrepaidAdminDashBoardServiceClient();

        TraxAdjustmentTransactionResult result;
        adjustmentTransactioninfo.ProductActionMasterId = Convert.ToInt16(System.Configuration.ConfigurationManager.AppSettings["ProductActionMasterId"]);
        adjustmentTransactioninfo.ProductCode = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["ProductCode"]);
        adjustmentTransactioninfo.DebitEntityMasterId = TraxEntityType.GPLedgerAccount;
        adjustmentTransactioninfo.CreditEntityMasterId = TraxEntityType.GPLedgerAccount;
        adjustmentTransactioninfo.UserId = Utility.UserID;
        adjustmentTransactioninfo.RetailerId = _PrepaidAdminService.GetBranchRetailerId(branchCode);

使用serializeArray並可以添加其他數據:

var data = $('form').serializeArray();
    data.push({name: 'Amit', value: 'love'});
    $.ajax({
      type: "POST",
      url: "url",
      data: data,
      success: function(data) {
        // do what ever you want with the server response
    },
    error: function() {
        alert('error handing here');
    }
});

刪除@Html.Raw(Url.Action())contentTypeJSON.stringify()並將其留給ModelBinder 將您的ajax更改為此:

$.ajax({
    url: '@Url.Action("AdjustmentTransaction", "PrepaidActivity")',
    traditional: true,
    data: {
        adjustmentTransactioninfo: adjustmentTransactioninfo,
        fileData: "0",
        branchCode: '@Model.prepaidBranchList.IASBranchCode'
    },
    enctype: "multipart/form-data",
    type: 'POST',
    success: function (data) {
        alert("success");

    }
});
   var params = { param1: value, param2: value2}
        $.ajax({
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            url: '../aspxPage.aspx/methodName',
            data: JSON.stringify(params),
            datatype: 'json',
            success: function (data) {
           var  MethodReturnValue = data.d

            },
            error: function (xmlhttprequest, textstatus, errorthrown) {
                alert(" conection to the server failed ");
            }
        });

// param1和param2名稱應與方法參數相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM