jQuery AJAX 数据多参数

标签 jquery ajax

我有多次传递的代码,但在某种条件下存在很小的差异,但部分是相同的。我如何声明代码是相同的并将其添加到代码的其余部分? 这是我的代码:

    function sendData() {

    // I want to declare a variable here with all SameParmX here

    if(window.confirmCopmanyName == "A") {
        var data = {
            SameParm1: $("#SameParm1").val(), 
            SameParm2: $("#SameParm2").val(),
            SameParm3: $("#SameParm3").val(),
            SameParm4: $("#SameParm4").val(),
            SameParm5: $("#SameParm5").val(),
            SameParm6: $("#SameParm6").val(),

            DueAmount_1 : $("#DueAmount_1").val(),
            DueDate_1 : $("#DueDate_1").val(),
            PaymentNumber_1 : $("#PaymentNumber_1").val(),
            GFStatus_1 : $("#GFStatus_1").val(),
            BillNumber_1 : $("#BillNumber_1").val(),
            DueAmount_2 : $("#DueAmount_2").val(),
            DueDate_2 : $("#DueDate_2").val(),
            PaymentNumber_2 : $("#PaymentNumber_2").val(),
            GFStatus_2 : $("#GFStatus_2").val(),
            BillNumber_2 : $("#BillNumber_2").val(),
            DueAmount_3 : $("#DueAmount_3").val(),
            DueDate_3 : $("#DueDate_3").val(),
            PaymentNumber_3 : $("#PaymentNumber_3").val(),
            GFStatus_3 : $("#GFStatus_3").val(),
            BillNumber_3 : $("#BillNumber_3").val(),
            DueAmount_4 : $("#DueAmount_4").val(),
            DueDate_4 : $("#DueDate_4").val(),
            PaymentNumber_4 : $("#PaymentNumber_4").val(),
            GFStatus_4 : $("#GFStatus_4").val(),
            BillNumber_4 : $("#BillNumber_4").val()
        };
    } else if (window.confirmCopmanyName == "B") {
        var data = {
            SameParm1: $("#SameParm1").val(),
            SameParm2: $("#SameParm2").val(),
            SameParm3: $("#SameParm3").val(),
            SameParm4: $("#SameParm4").val(),
            SameParm5: $("#SameParm5").val(),
            SameParm6: $("#SameParm6").val(),

            SumStk: "1.40" // Сума стикер
            ODueAmount_1 : $("#ODueAmount_1").val(),
            ODueDate_1 : $("#ODueDate_1").val(),
            OPaymentNumber_1 : $("#OPaymentNumber_1").val(),
            OGFStatus_1 : $("#OGFStatus_1").val(),
            OBillNumber_1 : $("#OBillNumber_1").val(),
            ODueAmount_2 : $("#ODueAmount_2").val(),
            ODueDate_2 : $("#ODueDate_2").val(),
            OPaymentNumber_2 : $("#POaymentNumber_2").val(),
            GFStatus_2 : $("#OGFStatus_2").val(),
            OBillNumber_2 : $("#OBillNumber_2").val(),
            ODueAmount_3 : $("#ODueAmount_3").val(),
            ODueDate_3 : $("#ODueDate_3").val(),
            OPaymentNumber_3 : $("#OPaymentNumber_3").val(),
            OGFStatus_3 : $("#OGFStatus_3").val(),
            OBillNumber_3 : $("#OBillNumber_3").val(),
            ODueAmount_4 : $("#ODueAmount_4").val(),
            ODueDate_4 : $("#ODueDate_4").val(),
            OPaymentNumber_4 : $("#OPaymentNumber_4").val(),
            OGFStatus_4 : $("#OGFStatus_4").val(),
            OBillNumber_4 : $("#OBillNumber_4").val(),
        };
    } else if(window.confirmCopmanyName == "C") {
        var data = {
            SameParm1: $("#SameParm1").val(),
            SameParm2: $("#SameParm2").val(),
            SameParm3: $("#SameParm3").val(),
            SameParm4: $("#SameParm4").val(),
            SameParm5: $("#SameParm5").val(),
            SameParm6: $("#SameParm6").val(),

            DueDate0: $("#padejDate_0").val(),
            DueDate1: $("#padejDate_1").val(),
            DueDate2: $("#padejDate_2").val(),
            DueDate3: $("#padejDate_3").val(),
            DueAmount0: $("#totalInstall_0").val(),
            DueAmount1: $("#totalInstall_1").val(),
            DueAmount2: $("#totalInstall_2").val(),
            DueAmount3: $("#totalInstall_3").val(),
        };
    } else if(window.confirmCopmanyName == "D") {
        var data = {
            SameParm1: $("#SameParm1").val(),
            SameParm2: $("#SameParm2").val(),
            SameParm3: $("#SameParm3").val(),
            SameParm4: $("#SameParm4").val(),
            SameParm5: $("#SameParm5").val(),
            SameParm6: $("#SameParm6").val(),

            DueDate0 : $("#paydate_0").val(),
            DueDate1 : $("#paydate_1").val(),
            DueDate2 : $("#paydate_2").val(),
            DueDate3 : $("#paydate_3").val(),
            DueAmount0 : $("#installments_0").val(),
            DueAmount1 : $("#installments_1").val(),
            DueAmount2 : $("#installments_2").val(),
            DueAmount3 : $("#installments_3").val(),
        };
    }
    data = $.param(data);
    return data;
}

function writeLoc() {
    $.ajax({
        global: false,
        type: 'POST',
        url: 'myurl.php',
        dataType: 'json',
        data: sendData(),
        cache: false,
        timeout: 60000,
        success: function(result) {
            console.log(result);
        },
        error: function (request, status, error) {
            serviceError();
        }
    });
}

提前致谢。

最佳答案

您必须使用通用参数创建第一个对象,然后使用特定参数创建第二个对象,然后合并它:

    function sendData() {

    /* Here you put the common parameters*/
    same_obj={
            SameParm1: $("#SameParm1").val(), 
            SameParm2: $("#SameParm2").val(),
            SameParm3: $("#SameParm3").val(),
            SameParm4: $("#SameParm4").val(),
            SameParm5: $("#SameParm5").val(),
            SameParm6: $("#SameParm6").val()}
    /* then you put the specific ones */
    if(window.confirmCopmanyName == "A") {
        var data = {    DueAmount_1 : $("#DueAmount_1").val(),
            DueDate_1 : $("#DueDate_1").val(),
            PaymentNumber_1 : $("#PaymentNumber_1").val(),
            GFStatus_1 : $("#GFStatus_1").val(),
            BillNumber_1 : $("#BillNumber_1").val(),
            DueAmount_2 : $("#DueAmount_2").val(),
            DueDate_2 : $("#DueDate_2").val(),
            PaymentNumber_2 : $("#PaymentNumber_2").val(),
            GFStatus_2 : $("#GFStatus_2").val(),
            BillNumber_2 : $("#BillNumber_2").val(),
            DueAmount_3 : $("#DueAmount_3").val(),
            DueDate_3 : $("#DueDate_3").val(),
            PaymentNumber_3 : $("#PaymentNumber_3").val(),
            GFStatus_3 : $("#GFStatus_3").val(),
            BillNumber_3 : $("#BillNumber_3").val(),
            DueAmount_4 : $("#DueAmount_4").val(),
            DueDate_4 : $("#DueDate_4").val(),
            PaymentNumber_4 : $("#PaymentNumber_4").val(),
            GFStatus_4 : $("#GFStatus_4").val(),
            BillNumber_4 : $("#BillNumber_4").val()
        };
    } else if (window.confirmCopmanyName == "B") {
        var data = {                SumStk: "1.40" // Сума стикер
            ODueAmount_1 : $("#ODueAmount_1").val(),
            ODueDate_1 : $("#ODueDate_1").val(),
            OPaymentNumber_1 : $("#OPaymentNumber_1").val(),
            OGFStatus_1 : $("#OGFStatus_1").val(),
            OBillNumber_1 : $("#OBillNumber_1").val(),
            ODueAmount_2 : $("#ODueAmount_2").val(),
            ODueDate_2 : $("#ODueDate_2").val(),
            OPaymentNumber_2 : $("#POaymentNumber_2").val(),
            GFStatus_2 : $("#OGFStatus_2").val(),
            OBillNumber_2 : $("#OBillNumber_2").val(),
            ODueAmount_3 : $("#ODueAmount_3").val(),
            ODueDate_3 : $("#ODueDate_3").val(),
            OPaymentNumber_3 : $("#OPaymentNumber_3").val(),
            OGFStatus_3 : $("#OGFStatus_3").val(),
            OBillNumber_3 : $("#OBillNumber_3").val(),
            ODueAmount_4 : $("#ODueAmount_4").val(),
            ODueDate_4 : $("#ODueDate_4").val(),
            OPaymentNumber_4 : $("#OPaymentNumber_4").val(),
            OGFStatus_4 : $("#OGFStatus_4").val(),
            OBillNumber_4 : $("#OBillNumber_4").val(),
        };
    } else if(window.confirmCopmanyName == "C") {
        var data = {DueDate0: $("#padejDate_0").val(),
            DueDate1: $("#padejDate_1").val(),
            DueDate2: $("#padejDate_2").val(),
            DueDate3: $("#padejDate_3").val(),
            DueAmount0: $("#totalInstall_0").val(),
            DueAmount1: $("#totalInstall_1").val(),
            DueAmount2: $("#totalInstall_2").val(),
            DueAmount3: $("#totalInstall_3").val(),
        };
    } else if(window.confirmCopmanyName == "D") {
        var data = {DueDate0 : $("#paydate_0").val(),
            DueDate1 : $("#paydate_1").val(),
            DueDate2 : $("#paydate_2").val(),
            DueDate3 : $("#paydate_3").val(),
            DueAmount0 : $("#installments_0").val(),
            DueAmount1 : $("#installments_1").val(),
            DueAmount2 : $("#installments_2").val(),
            DueAmount3 : $("#installments_3").val(),
        };
    }
    Object.assign(data,same_obj) /* NOW we merge data!*/
    data = $.param(data);
    return data;
}

function writeLoc() {
    $.ajax({
        global: false,
        type: 'POST',
        url: 'myurl.php',
        dataType: 'json',
        data: sendData(),
        cache: false,
        timeout: 60000,
        success: function(result) {
            console.log(result);
        },
        error: function (request, status, error) {
            serviceError();
        }
    });
}

关于jQuery AJAX 数据多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37387561/

相关文章:

javascript - 为什么我使用基于 Blob 的对象 URL 下载 AJAX 文件会损坏文件?

javascript - 成功的 XMLHttprequest 表单 POST 上的操作未触发,但我确实收到了电子邮件

javascript 将 var 传递给匿名函数

java - 通过 ajax/collapsible ListView 刷新 wicket 容器

javascript - 为什么我的 jQuery 调整大小触发不一致?

javascript - 如何确定div是否具有特定类的特定元素?

jquery - 将 JSON 与 XQuery 页面结合使用

javascript - 将各种类型的对象作为 AJAX post 请求传递?

javascript - 输入谷歌地图方向

javascript - Ajax响应改变位置