如何在Ajax中的单个FormData对象中发送多个数据?

时间:2017-09-26 09:12:46

标签: c# jquery asp.net ajax asp.net-mvc

我的应用程序有多个数据,如文本框值,标签值,下拉值,文件数据,并在服务器端发送相同数据并存储在数据库中

为了实现这一点,我使用了以下方法,但现在我想使用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);

3 个答案:

答案 0 :(得分:0)

使用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');
    }
});

答案 1 :(得分:0)

删除@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");

    }
});

答案 2 :(得分:-1)

   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名称应与方法参数

相同